Пример #1
0
        protected void HandleKick(IRCMessage sIRCMessage)
        {
            if (!IsAdmin(sIRCMessage.Nick, sIRCMessage.Host, AdminFlag.Operator))
            {
                return;
            }

            if (!Rfc2812Util.IsValidChannelName(sIRCMessage.Channel))
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("ThisIsNotAChannelDoNotWriteInPM", sIRCMessage.Channel, sIRCMessage.ServerName));
                return;
            }

            if (sIRCMessage.Info.Length < 5)
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoName", sIRCMessage.Channel, sIRCMessage.ServerName));
                return;
            }

            bool   iskick = false;
            string kick   = sIRCMessage.Info[4].ToLower();

            if (!Rfc2812Util.IsValidNick(kick))
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NotaNickNameHasBeenSet", sIRCMessage.Channel, sIRCMessage.ServerName));
                return;
            }

            if (sIRCMessage.Info.Length == 5)
            {
                if (kick == sMyNickInfo.NickStorage.ToLower())
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetCommandText("kick", sIRCMessage.Channel, sIRCMessage.ServerName));
                }
                else
                {
                    iskick      = true;
                    KickPrivmsg = sIRCMessage.Channel;
                    sSender.Kick(sIRCMessage.Channel, kick);
                }
            }
            else if (sIRCMessage.Info.Length >= 6)
            {
                if (kick == sMyNickInfo.NickStorage.ToLower())
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetCommandText("kick", sIRCMessage.Channel, sIRCMessage.ServerName));
                }
                else
                {
                    iskick      = true;
                    KickPrivmsg = sIRCMessage.Channel;
                    sSender.Kick(sIRCMessage.Channel, kick, sIRCMessage.Info.SplitToString(5, SchumixBase.Space));
                }
            }

            if (iskick)
            {
                // Clean
                Thread.Sleep(5 * 1000);

                if (sIRCMessage.Channel.ToLower() == KickPrivmsg.ToLower() || !KickPrivmsg.IsNullOrEmpty())
                {
                    KickPrivmsg = string.Empty;
                }
            }
        }