예제 #1
0
        public bool Ignore(IRCMessage sIRCMessage)
        {
            string nick = sIRCMessage.Nick.ToLower();

            if(CommandFloodList.ContainsKey(nick))
            {
                if(!CommandFloodList[nick].IsIgnore &&
                   CommandFloodList[nick].Message >= FloodingConfig.NumberOfCommands)
                {
                    CommandFloodList[nick].IsIgnore = true;
                    CommandFloodList[nick].Warring = true;
                    CommandFloodList[nick].BanTime = DateTime.Now.AddMinutes(1);
                    CommandFloodList[nick].Message = 0;
                    sSendMessage.SendCMPrivmsg(nick, sLManager.GetWarningText("CommandsDisabled2", sIRCMessage.Channel, sIRCMessage.ServerName), FloodingConfig.Seconds);
                    return true;
                }

                if(CommandFloodList[nick].IsIgnore)
                {
                    if(CommandFloodList[nick].Warring)
                    {
                        CommandFloodList[nick].Warring = false;
                        sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("CommandsDisabled", sIRCMessage.Channel, sIRCMessage.ServerName));
                    }

                    return true;
                }
            }

            return false;
        }
예제 #2
0
 public void HandleRoll(IRCMessage sIRCMessage)
 {
     var rand = new Random();
     int number = rand.Next(0, 100);
     var sSendMessage = sIrcBase.Networks[sIRCMessage.ServerName].sSendMessage;
     sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetCommandText("roll", sIRCMessage.Channel, sIRCMessage.ServerName), number);
 }
예제 #3
0
        protected void HandleWhois(IRCMessage sIRCMessage)
        {
            if(sIRCMessage.Info.Length < 5)
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoWhoisName", sIRCMessage.Channel, sIRCMessage.ServerName));
                return;
            }

            string nick = sIRCMessage.Info[4].ToLower();

            if(WhoisList.ContainsKey(nick))
                Monitor.Enter(WhoisList[nick].Lock);

            var whois = new Whois();
            whois.Channel = sIRCMessage.Channel;
            whois.Message = string.Empty;
            whois.Online = false;
            Monitor.Enter(whois.Lock);

            if(WhoisList.ContainsKey(nick))
                WhoisList.Remove(nick);

            WhoisList.Add(nick, whois);
            sSender.Whois(nick);
        }
예제 #4
0
        protected void HandleTranslate(IRCMessage sIRCMessage)
        {
            if(sIRCMessage.Info.Length < 5)
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoTranslateLanguage", sIRCMessage.Channel, sIRCMessage.ServerName));
                return;
            }

            if(!sIRCMessage.Info[4].Contains("|"))
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoTranslateLanguage", sIRCMessage.Channel, sIRCMessage.ServerName));
                return;
            }

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

            string url = sUtilities.GetUrl("http://www.google.com/translate_t?hl=en&ie=UTF8&text=", sIRCMessage.Info.SplitToString(5, SchumixBase.Space), "&langpair=" + sIRCMessage.Info[4]);
            var Regex = new Regex("mouseout=\"this.style.backgroundColor='#fff'\">(?<text>.+)</span></span></div></div>", RegexOptions.CultureInvariant);

            if(!Regex.IsMatch(url))
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetCommandText("translate", sIRCMessage.Channel, sIRCMessage.ServerName));
            else
                sSendMessage.SendChatMessage(sIRCMessage, "{0}", Regex.Match(url).Groups["text"].ToString());
        }
예제 #5
0
        protected void HandleGoogle(IRCMessage sIRCMessage)
        {
            var text = sLManager.GetCommandTexts("google", sIRCMessage.Channel, sIRCMessage.ServerName);
            if(text.Length < 4)
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                return;
            }

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

            string url = sUtilities.GetUrl("http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=", sIRCMessage.Info.SplitToString(4, SchumixBase.Space));
            var google = new GoogleWebResponseData();
            google = JsonHelper.Deserialise<GoogleWebResponseData>(url);

            if(google.ResultSet.Results.Length > 0)
            {
                sSendMessage.SendChatMessage(sIRCMessage, text[2], google.ResultSet.Results[0].TitleNoFormatting);
                sSendMessage.SendChatMessage(sIRCMessage, text[3], google.ResultSet.Results[0].UnescapedUrl);
            }
            else
            {
                sSendMessage.SendChatMessage(sIRCMessage, text[0]);
                sSendMessage.SendChatMessage(sIRCMessage, text[1]);
            }
        }
예제 #6
0
        protected void HandleLeave(IRCMessage sIRCMessage)
        {
            if(IsWarningAdmin(sIRCMessage.Nick, sIRCMessage.Host, AdminFlag.HalfOperator))
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("WarningAdmin", sIRCMessage.Channel, sIRCMessage.ServerName));
                return;
            }

            if(!IsAdmin(sIRCMessage.Nick, sIRCMessage.Host, AdminFlag.HalfOperator))
                return;

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

            if(!Rfc2812Util.IsValidChannelName(sIRCMessage.Info[4]))
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NotaChannelHasBeenSet", sIRCMessage.Channel, sIRCMessage.ServerName));
                return;
            }

            if(!sChannelList.List.ContainsKey(sIRCMessage.Info[4].ToLower()))
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("ImNotOnThisChannel", sIRCMessage.Channel, sIRCMessage.ServerName));
                return;
            }

            sSender.Part(sIRCMessage.Info[4]);
            sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetCommandText("leave", sIRCMessage.Channel, sIRCMessage.ServerName), sIRCMessage.Info[4]);
        }
예제 #7
0
        protected void HandlePrivmsg(IRCMessage sIRCMessage)
        {
            if(sIgnoreNickName.IsIgnore(sIRCMessage.Nick))
                return;

            if(ConsoleLog.CLog)
            {
                Log.SetForegroundColor(ConsoleColor.Yellow);
                Log.WriteLine("[{0}] <{1}> {2}", sIRCMessage.Channel, sIRCMessage.Nick, sIRCMessage.Args);
                Log.SetForegroundColor(ConsoleColor.Gray);
            }

            if(Rfc2812Util.IsAction(sIRCMessage.Args))
                sIrcLog.LogInFile(sIRCMessage.Channel, sIRCMessage.Nick, sLConsole.GetString("[ACTION] {0}"), Rfc2812Util.GetAction(sIRCMessage.Args));
            else
                sIrcLog.LogInFile(sIRCMessage.Channel, sIRCMessage.Nick, sIRCMessage.Args);

            if(!Rfc2812Util.IsValidChannelName(sIRCMessage.Channel))
                sIRCMessage.Channel = sIRCMessage.Nick; // Nem 100% a müködés. Ha baj van akkor az adott helyen kell javítani nem így globálisan. (sqlescape)

            sCtcpSender.CtcpReply(sIRCMessage);

            if(sMyChannelInfo.FSelect(IFunctions.Commands) || !Rfc2812Util.IsValidChannelName(sIRCMessage.Channel))
            {
                if(!sMyChannelInfo.FSelect(IChannelFunctions.Commands, sIRCMessage.Channel) && Rfc2812Util.IsValidChannelName(sIRCMessage.Channel))
                    return;

                HandleCommand(sIRCMessage);
            }
        }
예제 #8
0
        public void HandlePrime(IRCMessage sIRCMessage)
        {
            var sSendMessage = sIrcBase.Networks[sIRCMessage.ServerName].sSendMessage;
            var text = sLManager.GetCommandTexts("prime", sIRCMessage.Channel, sIRCMessage.ServerName);
            if(text.Length < 3)
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                return;
            }

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

            if(!sIRCMessage.Info[4].IsNumber())
            {
                sSendMessage.SendChatMessage(sIRCMessage, text[0]);
                return;
            }

            bool prim = sUtilities.IsPrime(sIRCMessage.Info[4].ToInt32());

            if(!prim)
                sSendMessage.SendChatMessage(sIRCMessage, text[1], sIRCMessage.Info[4]);
            else
                sSendMessage.SendChatMessage(sIRCMessage, text[2], sIRCMessage.Info[4]);
        }
예제 #9
0
        protected void HandleCannotJoinChannel(IRCMessage sIRCMessage)
        {
            if(sIRCMessage.Info.Length < 4)
                return;

            SchumixBase.DManager.Update("channels", string.Format("Enabled = 'false', Error = '{0}'", sLConsole.MessageHandler("Text17-1", sLManager.GetChannelLocalization(ChannelPrivmsg, sIRCMessage.ServerName))), string.Format("Channel = '{0}' And ServerName = '{1}'", sIRCMessage.Info[3].ToLower(), sIRCMessage.ServerName));
            sSendMessage.SendChatMessage(sIRCMessage.MessageType, ChannelPrivmsg, sLConsole.MessageHandler("Text17", sLManager.GetChannelLocalization(ChannelPrivmsg, sIRCMessage.ServerName)), sIRCMessage.Info[3]);
            ChannelPrivmsg = sMyNickInfo.NickStorage;
        }
예제 #10
0
        private void HandleCommand(IRCMessage sIRCMessage)
        {
            sIRCMessage.Info[3] = sIRCMessage.Info[3].Remove(0, 1, SchumixBase.Colon);
            Schumix(sIRCMessage);

            if(sIRCMessage.Info[3].IsNullOrEmpty() || sIRCMessage.Info[3].Length < PLength || sIRCMessage.Info[3].Substring(0, PLength) != IRCConfig.List[sIRCMessage.ServerName].CommandPrefix)
                return;

            sIRCMessage.Info[3] = sIRCMessage.Info[3].Remove(0, PLength);
            IncomingInfo(sIRCMessage.Info[3].ToLower(), sIRCMessage);
        }
예제 #11
0
        public void HandleMd5(IRCMessage sIRCMessage)
        {
            var sSendMessage = sIrcBase.Networks[sIRCMessage.ServerName].sSendMessage;

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

            sSendMessage.SendChatMessage(sIRCMessage, sUtilities.Md5(sIRCMessage.Info.SplitToString(4, SchumixBase.Space)));
        }
예제 #12
0
        protected void HandleColors(IRCMessage sIRCMessage)
        {
            if(IsWarningAdmin(sIRCMessage.Nick, sIRCMessage.Host, AdminFlag.HalfOperator))
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("WarningAdmin", sIRCMessage.Channel, sIRCMessage.ServerName));
                return;
            }

            if(!IsAdmin(sIRCMessage.Nick, sIRCMessage.Host, AdminFlag.HalfOperator))
                return;

            sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetCommandText("colors", sIRCMessage.Channel, sIRCMessage.ServerName));
        }
예제 #13
0
        /// <summary>
        ///     Ha a szobában a köszönés funkció be van kapcsolva,
        ///     akkor köszön az éppen belépőnek.
        /// </summary>
        public void HandleJoin(IRCMessage sIRCMessage)
        {
            if(sIRCMessage.Nick == sIrcBase.Networks[sIRCMessage.ServerName].sMyNickInfo.NickStorage)
                return;

            if(sFunctions.AutoKick("join", sIRCMessage.Nick, sIRCMessage.Channel))
                return;

            if(sIrcBase.Networks[sIRCMessage.ServerName].sIgnoreNickName.IsIgnore(sIRCMessage.Nick))
                return;

            var sMyChannelInfo = sIrcBase.Networks[sIRCMessage.ServerName].sMyChannelInfo;
            var sSendMessage = sIrcBase.Networks[sIRCMessage.ServerName].sSendMessage;
            var sSender = sIrcBase.Networks[sIRCMessage.ServerName].sSender;
            sIRCMessage.Channel = sIRCMessage.Channel.Remove(0, 1, SchumixBase.Colon);
            sNameList.Add(sIRCMessage.Channel, sIRCMessage.Nick);

            if(sMyChannelInfo.FSelect(IFunctions.Automode) && sMyChannelInfo.FSelect(IChannelFunctions.Automode, sIRCMessage.Channel))
            {
                AutoMode = true;
                ModeChannel = sIRCMessage.Channel;
                sSender.NickServStatus(sIRCMessage.Nick);
            }

            if(sMyChannelInfo.FSelect(IFunctions.Greeter) && sMyChannelInfo.FSelect(IChannelFunctions.Greeter, sIRCMessage.Channel))
            {
                var rand = new Random();
                string greeter = string.Empty;
                var text = sLManager.GetCommandTexts("handlejoin", sIRCMessage.Channel, sIRCMessage.ServerName);
                if(text.Length < 3)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                    return;
                }

                var text2 = sLManager.GetCommandTexts("handlejoin/random", sIRCMessage.Channel, sIRCMessage.ServerName);
                greeter = text2[rand.Next(0, text2.Length-1)];

                if(DateTime.Now.Hour >= 3 && DateTime.Now.Hour <= 9)
                    sSendMessage.SendChatMessage(sIRCMessage, text[0], sIRCMessage.Nick);
                else if(DateTime.Now.Hour >= 20 && DateTime.Now.Hour < 3)
                    sSendMessage.SendChatMessage(sIRCMessage, text[1], sIRCMessage.Nick);
                else
                {
                    if(IsAdmin(sIRCMessage.Nick, sIRCMessage.Host))
                        sSendMessage.SendChatMessage(sIRCMessage, text[2]);
                    else
                        sSendMessage.SendChatMessage(sIRCMessage, "{0} {1}", greeter, sIRCMessage.Nick);
                }
            }
        }
예제 #14
0
        protected void HandleNick(IRCMessage sIRCMessage)
        {
            if(IsWarningAdmin(sIRCMessage.Nick, sIRCMessage.Host, AdminFlag.HalfOperator))
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("WarningAdmin", sIRCMessage.Channel, sIRCMessage.ServerName));
                return;
            }

            if(!IsAdmin(sIRCMessage.Nick, sIRCMessage.Host, AdminFlag.HalfOperator))
                return;

            var text = sLManager.GetCommandTexts("nick", sIRCMessage.Channel, sIRCMessage.ServerName);
            if(text.Length < 2)
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                return;
            }

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

            sIrcBase.Networks[sIRCMessage.ServerName].NewNick = true;
            string nick = sIRCMessage.Info[4];

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

            if(sMyNickInfo.NickStorage == nick)
            {
                sSendMessage.SendChatMessage(sIRCMessage, text[1]);
                return;
            }

            if(sChannelList.List[sIRCMessage.Channel.ToLower()].Names.ContainsKey(nick.ToLower()) && sMyNickInfo.NickStorage.ToLower() != nick.ToLower())
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLConsole.MessageHandler("Text14", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                return;
            }

            NewNickPrivmsg = sIRCMessage.Channel;
            sMyNickInfo.ChangeNick(nick);
            sSendMessage.SendChatMessage(sIRCMessage, text[0], nick);
            sSender.Nick(nick);
        }
예제 #15
0
        protected void HandleInfo(IRCMessage sIRCMessage)
        {
            var text = sLManager.GetCommandTexts("info", sIRCMessage.Channel, sIRCMessage.ServerName);
            if(text.Length < 4)
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                return;
            }

            sSendMessage.SendChatMessage(sIRCMessage, text[0], Consts.SchumixProgrammedBy);
            sSendMessage.SendChatMessage(sIRCMessage, text[1], Consts.SchumixDevelopers);
            sSendMessage.SendChatMessage(sIRCMessage, text[2], Consts.SchumixWebsite);
            sSendMessage.SendChatMessage(sIRCMessage, text[3]);
        }
예제 #16
0
        public void HandleCalc(IRCMessage sIRCMessage)
        {
            var sSendMessage = sIrcBase.Networks[sIRCMessage.ServerName].sSendMessage;

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

            var client = new WAClient(WolframAlphaConfig.Key);
            var solution = client.Solve(sIRCMessage.Info.SplitToString(4, SchumixBase.Space));
            sSendMessage.SendChatMessage(sIRCMessage, "{0}", solution);
        }
예제 #17
0
        public void HandleXrev(IRCMessage sIRCMessage)
        {
            var sSendMessage = sIrcBase.Networks[sIRCMessage.ServerName].sSendMessage;

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

            if(sIRCMessage.Info[4].ToLower() == "github")
            {
                var text = sLManager.GetCommandTexts("xrev/github", sIRCMessage.Channel, sIRCMessage.ServerName);
                if(text.Length < 7)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                    return;
                }

                if(sIRCMessage.Info.Length < 6)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, text[0]);
                    return;
                }

                if(sIRCMessage.Info.Length < 7)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, text[1]);
                    return;
                }

                if(sIRCMessage.Info.Length < 8)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, text[2]);
                    return;
                }

                var github = new Github(sIRCMessage.Info[5], sIRCMessage.Info[6], sIRCMessage.Info[7]);

                if(github.UserName.IsNullOrEmpty() || github.Message.IsNullOrEmpty() || github.Url.IsNullOrEmpty())
                {
                    sSendMessage.SendChatMessage(sIRCMessage, text[3]);
                    return;
                }

                sSendMessage.SendChatMessage(sIRCMessage, text[4], github.Message);
                sSendMessage.SendChatMessage(sIRCMessage, text[5], github.Url);
                sSendMessage.SendChatMessage(sIRCMessage, text[6], github.UserName);
            }
        }
예제 #18
0
        public void FloodCommand(IRCMessage sIRCMessage)
        {
            if(sMyChannelInfo.FSelect(IFunctions.Antiflood) && sMyChannelInfo.FSelect(IChannelFunctions.Antiflood, sIRCMessage.Channel.ToLower()))
            {
                string nick = sIRCMessage.Nick.ToLower();

                if(nick == "py-ctcp")
                    return;

                if(CommandFloodList.ContainsKey(nick) && !CommandFloodList[nick].IsIgnore)
                    CommandFloodList[nick].Message++;
                else if(!CommandFloodList.ContainsKey(nick))
                    CommandFloodList.Add(nick, new CommandFlood());
            }
        }
예제 #19
0
파일: Help.cs 프로젝트: Schumix/Schumix2
        public bool Help(IRCMessage sIRCMessage)
        {
            // Fél Operátor parancsok segítségei
            if(sIRCMessage.Info[4].ToLower() == "autofunction")
            {
                var sSendMessage = sIrcBase.Networks[sIRCMessage.ServerName].sSendMessage;

                if(IsWarningAdmin(sIRCMessage.Nick, sIRCMessage.Host, AdminFlag.HalfOperator))
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("WarningAdmin", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return true;
                }

                if(!IsAdmin(sIRCMessage.Nick, sIRCMessage.Host, AdminFlag.HalfOperator))
                    return false;

                if(sIRCMessage.Info.Length < 6)
                {
                    var text = sLManager.GetCommandHelpTexts("autofunction", sIRCMessage.Channel, sIRCMessage.ServerName);
                    if(text.Length < 4)
                    {
                        sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                        return true;
                    }

                    if(IsAdmin(sIRCMessage.Nick, AdminFlag.HalfOperator))
                    {
                        sSendMessage.SendChatMessage(sIRCMessage, text[0]);
                        sSendMessage.SendChatMessage(sIRCMessage, text[1]);
                        return true;
                    }
                    else if(IsAdmin(sIRCMessage.Nick, AdminFlag.Operator))
                    {
                        sSendMessage.SendChatMessage(sIRCMessage, text[2]);
                        sSendMessage.SendChatMessage(sIRCMessage, text[3]);
                        return true;
                    }
                    else if(IsAdmin(sIRCMessage.Nick, AdminFlag.Administrator))
                    {
                        sSendMessage.SendChatMessage(sIRCMessage, text[2]);
                        sSendMessage.SendChatMessage(sIRCMessage, text[3]);
                        return true;
                    }
                }
            }

            return false;
        }
예제 #20
0
        protected void HandleDate(IRCMessage sIRCMessage)
        {
            var text = sLManager.GetCommandTexts("date", sIRCMessage.Channel, sIRCMessage.ServerName);
            if(text.Length < 2)
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                return;
            }

            var time = DateTime.Now;
            string nameday = sUtilities.NameDay(sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName));

            if(!nameday.IsNullOrEmpty())
                sSendMessage.SendChatMessage(sIRCMessage, text[0], time.Year, time.Month.ToMonthFormat(), time.Day.ToDayFormat(), nameday);
            else
                sSendMessage.SendChatMessage(sIRCMessage, text[1], time.Year, time.Month.ToMonthFormat(), time.Day.ToDayFormat());
        }
예제 #21
0
        protected void HandleOnline(IRCMessage sIRCMessage)
        {
            if(sIRCMessage.Info.Length < 5)
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoName", sIRCMessage.Channel, sIRCMessage.ServerName));
                return;
            }

            if(sChannelList.List[sIRCMessage.Channel.ToLower()].Names.ContainsKey(sIRCMessage.Info[4].ToLower()))
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLConsole.MessageHandler("Text11", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                return;
            }

            IsOnline = true;
            OnlinePrivmsg = sIRCMessage.Channel;
            sSender.NickServInfo(sIRCMessage.Info[4]);
        }
예제 #22
0
파일: Help.cs 프로젝트: Schumix/Schumix2
        public bool Help(IRCMessage sIRCMessage)
        {
            var sSendMessage = sIrcBase.Networks[sIRCMessage.ServerName].sSendMessage;
            string command = IRCConfig.List[sIRCMessage.ServerName].NickName + SchumixBase.Comma;

            if(sIRCMessage.Info[4].ToLower() == command.ToLower())
            {
                if(sIRCMessage.Info.Length < 6)
                    return false;

                if(sIRCMessage.Info[5].ToLower() == "csc" || sIRCMessage.Info[5].ToLower() == "c#compiler")
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetCommandHelpText("schumix2/csc", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return true;
                }
            }

            return false;
        }
예제 #23
0
        protected void HandleWarning(IRCMessage sIRCMessage)
        {
            if(sIRCMessage.Info.Length < 5)
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoName", sIRCMessage.Channel, sIRCMessage.ServerName));
                return;
            }

            if(!IsAdmin(sIRCMessage.Nick, sIRCMessage.Host) && sIRCMessage.Info[4].Length > 0 && sIRCMessage.Info[4].Substring(0, 1) == "#")
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoOperator", sIRCMessage.Channel, sIRCMessage.ServerName));
                return;
            }

            if(sIRCMessage.Info.Length == 5)
                sSendMessage.SendChatMessage(sIRCMessage.MessageType, sIRCMessage.Info[4], sLManager.GetCommandText("warning", sIRCMessage.Channel, sIRCMessage.ServerName), sIRCMessage.Nick, sIRCMessage.Channel);
            else if(sIRCMessage.Info.Length >= 6)
                sSendMessage.SendChatMessage(sIRCMessage.MessageType, sIRCMessage.Info[4], "{0}", sIRCMessage.Info.SplitToString(5, SchumixBase.Space));
        }
예제 #24
0
        protected void HandleJoin(IRCMessage sIRCMessage)
        {
            if(IsWarningAdmin(sIRCMessage.Nick, sIRCMessage.Host, AdminFlag.HalfOperator))
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("WarningAdmin", sIRCMessage.Channel, sIRCMessage.ServerName));
                return;
            }

            if(!IsAdmin(sIRCMessage.Nick, sIRCMessage.Host, AdminFlag.HalfOperator))
                return;

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

            if(!Rfc2812Util.IsValidChannelName(sIRCMessage.Info[4]))
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NotaChannelHasBeenSet", sIRCMessage.Channel, sIRCMessage.ServerName));
                return;
            }

            if(sChannelList.List.ContainsKey(sIRCMessage.Info[4].ToLower()))
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("ImAlreadyOnThisChannel", sIRCMessage.Channel, sIRCMessage.ServerName));
                return;
            }

            if(sIgnoreChannel.IsIgnore(sIRCMessage.Info[4].ToLower()))
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("ThisChannelBlockedByAdmin", sIRCMessage.Channel, sIRCMessage.ServerName));
                return;
            }

            ChannelPrivmsg = sIRCMessage.Channel;
            sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetCommandText("join", sIRCMessage.Channel, sIRCMessage.ServerName), sIRCMessage.Info[4]);

            if(sIRCMessage.Info.Length == 5)
                sSender.Join(sIRCMessage.Info[4]);
            else if(sIRCMessage.Info.Length == 6)
                sSender.Join(sIRCMessage.Info[4], sIRCMessage.Info[5]);
        }
예제 #25
0
        protected void HandleXbot(IRCMessage sIRCMessage)
        {
            var text = sLManager.GetCommandTexts("xbot", sIRCMessage.Channel, sIRCMessage.ServerName);
            if(text.Length < 4)
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                return;
            }

            sSendMessage.SendChatMessage(sIRCMessage, text[0], sUtilities.GetVersion());
            string commands = string.Empty;
            string aliascommands = string.Empty;

            foreach(var command in sIrcBase.Networks[sIRCMessage.ServerName].CommandMethodMap)
            {
                if(command.Value.Permission != CommandPermission.Normal)
                    continue;

                if(command.Key == "xbot")
                    continue;

                if(sIgnoreCommand.IsIgnore(command.Key))
                    continue;

                var db = SchumixBase.DManager.QueryFirstRow("SELECT BaseCommand FROM alias_irc_command WHERE NewCommand = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(command.Key), sIRCMessage.ServerName);
                if(!db.IsNull())
                {
                    string basecommand = db["BaseCommand"].ToString();
                    aliascommands += " | " + IRCConfig.List[sIRCMessage.ServerName].CommandPrefix + command.Key + "->" + IRCConfig.List[sIRCMessage.ServerName].CommandPrefix + basecommand;
                    continue;
                }

                commands += " | " + IRCConfig.List[sIRCMessage.ServerName].CommandPrefix + command.Key;
            }

            sSendMessage.SendChatMessage(sIRCMessage, text[1], Consts.SchumixProgrammedBy);
            sSendMessage.SendChatMessage(sIRCMessage, text[2], commands.Remove(0, 3, " | "));

            if(!aliascommands.IsNullOrEmpty())
                sSendMessage.SendChatMessage(sIRCMessage, text[3], aliascommands.Remove(0, 3, " | "));
        }
예제 #26
0
        public void HandleWiki(IRCMessage sIRCMessage)
        {
            var sSendMessage = sIrcBase.Networks[sIRCMessage.ServerName].sSendMessage;
            var text = sLManager.GetCommandTexts("wiki", sIRCMessage.Channel, sIRCMessage.ServerName);
            if(text.Length < 5)
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                return;
            }

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

            string url = sUtilities.GetUrl("http://" + sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName).Substring(0, 2).ToLower()
                + ".wikipedia.org/w/api.php?action=opensearch&format=xml&search=", sIRCMessage.Info.SplitToString(4, SchumixBase.Space));

            if(url.Contains("<Text xml:space=\"preserve\">"))
            {
                url = url.Replace("&quot;", "\"");
                url = url.Remove(0, url.IndexOf("<Text xml:space=\"preserve\">") + "<Text xml:space=\"preserve\">".Length);
                string _text = url.Substring(0, url.IndexOf("</Text>"));
                url = url.Remove(0, url.IndexOf("<Description xml:space=\"preserve\">") + "<Description xml:space=\"preserve\">".Length);
                string _des = url.Substring(0, url.IndexOf("</Description>"));
                url = url.Remove(0, url.IndexOf("<Url xml:space=\"preserve\">") + "<Url xml:space=\"preserve\">".Length);
                string _url = url.Substring(0, url.IndexOf("</Url>"));

                sSendMessage.SendChatMessage(sIRCMessage, text[0], _text);
                sSendMessage.SendChatMessage(sIRCMessage, text[1], _url);

                if(_des.Length <= 200)
                    sSendMessage.SendChatMessage(sIRCMessage, text[2], _des);
                else
                    sSendMessage.SendChatMessage(sIRCMessage, text[3], _des.Substring(0, 200));
            }
            else
                sSendMessage.SendChatMessage(sIRCMessage, text[4]);
        }
예제 #27
0
        public bool HandleHelp(IRCMessage sIRCMessage)
        {
            var sSendMessage = sIrcBase.Networks[sIRCMessage.ServerName].sSendMessage;

            // Adminisztrátor parancsok
            if(sIRCMessage.Info[4].ToLower() == "test")
            {
                if(sTestCommand.IsWarningAdmin(sIRCMessage.Nick, sIRCMessage.Host, AdminFlag.Administrator))
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("WarningAdmin", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return true;
                }

                if(!sTestCommand.IsAdmin(sIRCMessage.Nick, sIRCMessage.Host, AdminFlag.Administrator))
                    return false;

                sSendMessage.SendChatMessage(sIRCMessage, "Teszt célokra használt parancs.");
                return true;
            }

            return false;
        }
예제 #28
0
        protected void HandleQuit(IRCMessage sIRCMessage)
        {
            if(IsWarningAdmin(sIRCMessage.Nick, sIRCMessage.Host, AdminFlag.Administrator))
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("WarningAdmin", sIRCMessage.Channel, sIRCMessage.ServerName));
                return;
            }

            if(!IsAdmin(sIRCMessage.Nick, sIRCMessage.Host, AdminFlag.Administrator))
                return;

            var text = sLManager.GetCommandTexts("quit", sIRCMessage.Channel, sIRCMessage.ServerName);
            if(text.Length < 2)
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                return;
            }

            sSendMessage.SendChatMessage(sIRCMessage, text[0]);
            SchumixBase.Quit();
            sIrcBase.Shutdown(string.Format(text[1], sIRCMessage.Nick));
        }
예제 #29
0
        protected void HandleIrc(IRCMessage sIRCMessage)
        {
            var text = sLManager.GetCommandTexts("irc", sIRCMessage.Channel, sIRCMessage.ServerName);
            if(text.Length < 2)
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                return;
            }

            if(sIRCMessage.Info.Length == 4)
            {
                var db = SchumixBase.DManager.Query("SELECT Command FROM irc_commands WHERE Language = '{0}'", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName));
                if(!db.IsNull())
                {
                    string commands = string.Empty;

                    foreach(DataRow row in db.Rows)
                        commands += " | " + row["Command"].ToString();

                    if(commands.IsNullOrEmpty())
                        sSendMessage.SendChatMessage(sIRCMessage, text[0], "none");
                    else
                        sSendMessage.SendChatMessage(sIRCMessage, text[0], commands.Remove(0, 3, " | "));
                }
                else
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("FaultyQuery", sIRCMessage.Channel, sIRCMessage.ServerName));
            }
            else
            {
                var db = SchumixBase.DManager.QueryFirstRow("SELECT Text FROM irc_commands WHERE Command = '{0}' AND Language = '{1}'", sUtilities.SqlEscape(sIRCMessage.Info[4]), sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName));
                if(!db.IsNull())
                    sSendMessage.SendChatMessage(sIRCMessage, db["Text"].ToString());
                else
                    sSendMessage.SendChatMessage(sIRCMessage, text[1]);
            }
        }
예제 #30
0
        protected void HandleAdmin(IRCMessage sIRCMessage)
        {
            if(!IsAdmin(sIRCMessage.Nick))
                return;

            if(sIRCMessage.Info.Length >= 5 && sIRCMessage.Info[4].ToLower() == "access")
            {
                if(sIRCMessage.Info.Length < 6)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoPassword", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return;
                }

                var text = sLManager.GetCommandTexts("admin/access", sIRCMessage.Channel, sIRCMessage.ServerName);
                if(text.Length < 4)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                    return;
                }

                string name = sIRCMessage.SqlEscapeNick.ToLower();
                var db = SchumixBase.DManager.QueryFirstRow("SELECT Password FROM admins WHERE Name = '{0}' And ServerName = '{1}'", name, sIRCMessage.ServerName);
                if(!db.IsNull())
                {
                    if(db["Password"].ToString() == sUtilities.Sha1(sIRCMessage.Info[5]))
                    {
                        SchumixBase.DManager.Update("admins", string.Format("Vhost = '{0}'", sIRCMessage.Host), string.Format("Name = '{0}' And ServerName = '{1}'", name, sIRCMessage.ServerName));
                        UpdateLCDB("UPDATE admins SET {0} WHERE {1}", string.Format("Vhost = '{0}'", sIRCMessage.Host), string.Format("Name = '{0}' And ServerName = '{1}'", name, sIRCMessage.ServerName));
                        sSendMessage.SendChatMessage(sIRCMessage, text[0]);
                    }
                    else
                    {
                        sSendMessage.SendChatMessage(sIRCMessage, text[1]);
                        return;
                    }
                }

                if(!sChannelList.IsChannelList(sIRCMessage.Nick.ToLower()))
                {
                    sSendMessage.SendChatMessage(sIRCMessage, text[2]);
                    sSendMessage.SendChatMessage(sIRCMessage, text[3]);
                    sChannelList.NewThread(sIRCMessage.ServerName, sIRCMessage.Nick.ToLower());
                }

                return;
            }
            else if(sIRCMessage.Info.Length >= 5 && sIRCMessage.Info[4].ToLower() == "newpassword")
            {
                if(sIRCMessage.Info.Length < 6)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoOldPassword", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return;
                }

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

                var text = sLManager.GetCommandTexts("admin/newpassword", sIRCMessage.Channel, sIRCMessage.ServerName);
                if(text.Length < 2)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                    return;
                }

                string name = sIRCMessage.SqlEscapeNick.ToLower();
                var db = SchumixBase.DManager.QueryFirstRow("SELECT Password FROM admins WHERE Name = '{0}' And ServerName = '{1}'", name, sIRCMessage.ServerName);
                if(!db.IsNull())
                {
                    if(db["Password"].ToString() == sUtilities.Sha1(sIRCMessage.Info[5]))
                    {
                        SchumixBase.DManager.Update("admins", string.Format("Password = '******'", sUtilities.Sha1(sIRCMessage.Info[6])), string.Format("Name = '{0}' And ServerName = '{1}'", name, sIRCMessage.ServerName));
                        UpdateLCDB("UPDATE admins SET {0} WHERE {1}", string.Format("Password = '******'", sUtilities.Sha1(sIRCMessage.Info[6])), string.Format("Name = '{0}' And ServerName = '{1}'", name, sIRCMessage.ServerName));
                        sSendMessage.SendChatMessage(sIRCMessage, text[0], sIRCMessage.Info[6]);
                    }
                    else
                    {
                        sSendMessage.SendChatMessage(sIRCMessage, text[1]);
                        return;
                    }
                }

                return;
            }

            if(IsWarningAdmin(sIRCMessage.Nick, sIRCMessage.Host, AdminFlag.HalfOperator))
            {
                sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("WarningAdmin", sIRCMessage.Channel, sIRCMessage.ServerName));
                return;
            }

            if(!IsAdmin(sIRCMessage.Nick, sIRCMessage.Host, AdminFlag.HalfOperator))
                return;

            if(sIRCMessage.Info.Length >= 5 && sIRCMessage.Info[4].ToLower() == "info")
            {
                var text = sLManager.GetCommandTexts("admin/info", sIRCMessage.Channel, sIRCMessage.ServerName);
                if(text.Length < 3)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                    return;
                }

                string name = sIRCMessage.Nick;

                if(sIRCMessage.Info.Length >= 6)
                    name = sIRCMessage.Info[5];

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

                var db = SchumixBase.DManager.QueryFirstRow("SELECT Flag FROM admins WHERE Name = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(name.ToLower()), sIRCMessage.ServerName);
                int flag = !db.IsNull() ? db["Flag"].ToInt32() : -1;

                if((AdminFlag)flag == AdminFlag.HalfOperator)
                    sSendMessage.SendChatMessage(sIRCMessage, text[0]);
                else if((AdminFlag)flag == AdminFlag.Operator)
                    sSendMessage.SendChatMessage(sIRCMessage, text[1]);
                else if((AdminFlag)flag == AdminFlag.Administrator)
                    sSendMessage.SendChatMessage(sIRCMessage, text[2]);
            }
            else if(sIRCMessage.Info.Length >= 5 && sIRCMessage.Info[4].ToLower() == "list")
            {
                var db = SchumixBase.DManager.Query("SELECT Name FROM admins WHERE ServerName = '{0}'", sIRCMessage.ServerName);
                if(!db.IsNull())
                {
                    string admins = string.Empty;

                    foreach(DataRow row in db.Rows)
                    {
                        string name = row["Name"].ToString();
                        admins += ", " + name;
                    }

                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetCommandText("admin/list", sIRCMessage.Channel, sIRCMessage.ServerName), admins.Remove(0, 2, ", "));
                }
                else
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("FaultyQuery", sIRCMessage.Channel, sIRCMessage.ServerName));
            }
            else if(sIRCMessage.Info.Length >= 5 && sIRCMessage.Info[4].ToLower() == "add")
            {
                if(sIRCMessage.Info.Length < 6)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoName", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return;
                }

                var text = sLManager.GetCommandTexts("admin/add", sIRCMessage.Channel, sIRCMessage.ServerName);
                if(text.Length < 7)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                    return;
                }

                string name = sIRCMessage.Info[5];
                if(!Rfc2812Util.IsValidNick(name))
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NotaNickNameHasBeenSet", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return;
                }

                var db = SchumixBase.DManager.QueryFirstRow("SELECT 1 FROM admins WHERE Name = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(name.ToLower()), sIRCMessage.ServerName);
                if(!db.IsNull())
                {
                    sSendMessage.SendChatMessage(sIRCMessage, text[0]);
                    return;
                }

                string pass = sUtilities.GetRandomString();
                SchumixBase.DManager.Insert("`admins`(ServerId, ServerName, Name, Password)", sIRCMessage.ServerId, sIRCMessage.ServerName, sUtilities.SqlEscape(name.ToLower()), sUtilities.Sha1(pass));
                UpdateLCDB("INSERT INTO `admins`(ServerId, ServerName, Name, Password) VALUES ('{0}', '{1}', '{2}', '{3}')", sIRCMessage.ServerId, sIRCMessage.ServerName, sUtilities.SqlEscape(name.ToLower()), sUtilities.Sha1(pass));

                if(SchumixBase.DManager.IsCreatedTable("hlmessage"))
                    SchumixBase.DManager.Insert("`hlmessage`(ServerId, ServerName, Name, Enabled)", sIRCMessage.ServerId, sIRCMessage.ServerName, sUtilities.SqlEscape(name.ToLower()), "off");

                sSendMessage.SendChatMessage(sIRCMessage, text[1], name);
                sSendMessage.SendChatMessage(sIRCMessage.MessageType, name, text[2], pass);
                sSendMessage.SendChatMessage(sIRCMessage.MessageType, name, text[3], IRCConfig.List[sIRCMessage.ServerName].CommandPrefix);
                sSendMessage.SendChatMessage(sIRCMessage.MessageType, name, text[4], IRCConfig.List[sIRCMessage.ServerName].CommandPrefix);

                if(SchumixBase.DManager.IsCreatedTable("notes_users"))
                {
                    var db1 = SchumixBase.DManager.QueryFirstRow("SELECT 1 FROM notes_users WHERE Name = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(name.ToLower()), sIRCMessage.ServerName);
                    if(db1.IsNull())
                    {
                        SchumixBase.DManager.Insert("`notes_users`(ServerId, ServerName, Name, Password)", sIRCMessage.ServerId, sIRCMessage.ServerName, sUtilities.SqlEscape(name.ToLower()), sUtilities.Sha1(pass));
                        sSendMessage.SendChatMessage(sIRCMessage.MessageType, name, text[5]);
                        sSendMessage.SendChatMessage(sIRCMessage.MessageType, name, text[6], IRCConfig.List[sIRCMessage.ServerName].CommandPrefix);
                    }
                }
            }
            else if(sIRCMessage.Info.Length >= 5 && sIRCMessage.Info[4].ToLower() == "remove")
            {
                if(sIRCMessage.Info.Length < 6)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoName", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return;
                }

                var text = sLManager.GetCommandTexts("admin/remove", sIRCMessage.Channel, sIRCMessage.ServerName);
                if(text.Length < 2)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                    return;
                }

                string name = sIRCMessage.Info[5];
                if(!Rfc2812Util.IsValidNick(name))
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NotaNickNameHasBeenSet", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return;
                }

                var db = SchumixBase.DManager.QueryFirstRow("SELECT 1 FROM admins WHERE Name = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(name.ToLower()), sIRCMessage.ServerName);
                if(db.IsNull())
                {
                    sSendMessage.SendChatMessage(sIRCMessage, text[0]);
                    return;
                }

                if(IsAdmin(sIRCMessage.Nick, AdminFlag.HalfOperator) && IsAdmin(name, AdminFlag.Operator))
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoOperator", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return;
                }

                if(IsAdmin(sIRCMessage.Nick, AdminFlag.HalfOperator) && IsAdmin(name, AdminFlag.Administrator))
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoAdministrator", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return;
                }

                if(IsAdmin(sIRCMessage.Nick, AdminFlag.Operator) && IsAdmin(name, AdminFlag.Administrator))
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoAdministrator", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return;
                }

                SchumixBase.DManager.Delete("admins", string.Format("Name = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(name.ToLower()), sIRCMessage.ServerName));
                UpdateLCDB("DELETE FROM admins WHERE {0}", string.Format("Name = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(name.ToLower()), sIRCMessage.ServerName));

                if(SchumixBase.DManager.IsCreatedTable("hlmessage"))
                    SchumixBase.DManager.Delete("hlmessage", string.Format("Name = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(name.ToLower()), sIRCMessage.ServerName));

                if(SchumixBase.DManager.IsCreatedTable("birthday"))
                {
                    var db1 = SchumixBase.DManager.QueryFirstRow("SELECT 1 FROM birthday WHERE Name = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(name.ToLower()), sIRCMessage.ServerName);
                    if(!db1.IsNull())
                        SchumixBase.DManager.Delete("birthday", string.Format("Name = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(name.ToLower()), sIRCMessage.ServerName));
                }

                sSendMessage.SendChatMessage(sIRCMessage, text[1], name);
            }
            else if(sIRCMessage.Info.Length >= 5 && sIRCMessage.Info[4].ToLower() == "rank")
            {
                if(sIRCMessage.Info.Length < 6)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoName", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return;
                }

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

                var text = sLManager.GetCommandTexts("admin/rank", sIRCMessage.Channel, sIRCMessage.ServerName);
                if(text.Length < 2)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                    return;
                }

                string name = sIRCMessage.Info[5].ToLower();
                var db = SchumixBase.DManager.QueryFirstRow("SELECT 1 FROM admins WHERE Name = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(name), sIRCMessage.ServerName);
                if(db.IsNull())
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("ThisIsntInTheList", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return;
                }

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

                if(IsAdmin(sIRCMessage.Nick, AdminFlag.HalfOperator) && IsAdmin(name, AdminFlag.Operator))
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoOperator", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return;
                }

                if(IsAdmin(sIRCMessage.Nick, AdminFlag.HalfOperator) && IsAdmin(name, AdminFlag.Administrator))
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoAdministrator", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return;
                }

                if(IsAdmin(sIRCMessage.Nick, AdminFlag.Operator) && IsAdmin(name, AdminFlag.Administrator))
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoAdministrator", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return;
                }

                int rank = sIRCMessage.Info[6].ToInt32();

                if(IsAdmin(sIRCMessage.Nick, AdminFlag.HalfOperator) && IsAdmin(name, AdminFlag.HalfOperator) && (AdminFlag)rank == AdminFlag.Operator)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoOperator", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return;
                }

                if(IsAdmin(sIRCMessage.Nick, AdminFlag.HalfOperator) && IsAdmin(name, AdminFlag.HalfOperator) && (AdminFlag)rank == AdminFlag.Administrator)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoAdministrator", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return;
                }

                if(IsAdmin(sIRCMessage.Nick, AdminFlag.Operator) && IsAdmin(name, AdminFlag.Operator) && (AdminFlag)rank == AdminFlag.Administrator)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoAdministrator", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return;
                }

                if((AdminFlag)rank == AdminFlag.Administrator || (AdminFlag)rank == AdminFlag.Operator || (AdminFlag)rank == AdminFlag.HalfOperator)
                {
                    var db1 = SchumixBase.DManager.QueryFirstRow("SELECT Flag FROM admins WHERE Name = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(name), sIRCMessage.ServerName);
                    if(!db1.IsNull())
                    {
                        if(db1["Flag"].ToInt32() == rank)
                        {
                            sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("TheGivenRankIsntDifferent", sIRCMessage.Channel, sIRCMessage.ServerName));
                            return;
                        }
                    }

                    SchumixBase.DManager.Update("admins", string.Format("Flag = '{0}'", rank), string.Format("Name = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(name), sIRCMessage.ServerName));
                    UpdateLCDB("UPDATE admins SET {0} WHERE {1}", string.Format("Flag = '{0}'", rank), string.Format("Name = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(name), sIRCMessage.ServerName));
                    sSendMessage.SendChatMessage(sIRCMessage, text[0]);
                }
                else
                    sSendMessage.SendChatMessage(sIRCMessage, text[1]);
            }
            else
            {
                var text = sLManager.GetCommandTexts("admin", sIRCMessage.Channel, sIRCMessage.ServerName);
                if(text.Length < 7)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                    return;
                }

                if(IsAdmin(sIRCMessage.Nick, AdminFlag.HalfOperator))
                {
                    string commands = string.Empty;
                    string aliascommands = string.Empty;

                    foreach(var command in sIrcBase.Networks[sIRCMessage.ServerName].CommandMethodMap)
                    {
                        if(command.Value.Permission != CommandPermission.HalfOperator)
                            continue;

                        if(command.Key == "admin")
                            continue;

                        if(sIgnoreCommand.IsIgnore(command.Key))
                            continue;

                        var db = SchumixBase.DManager.QueryFirstRow("SELECT BaseCommand FROM alias_irc_command WHERE NewCommand = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(command.Key), sIRCMessage.ServerName);
                        if(!db.IsNull())
                        {
                            string basecommand = db["BaseCommand"].ToString();
                            aliascommands += " | " + IRCConfig.List[sIRCMessage.ServerName].CommandPrefix + command.Key + "->" + IRCConfig.List[sIRCMessage.ServerName].CommandPrefix + basecommand;
                            continue;
                        }

                        commands += " | " + IRCConfig.List[sIRCMessage.ServerName].CommandPrefix + command.Key;
                    }

                    sSendMessage.SendChatMessage(sIRCMessage, text[0]);
                    sSendMessage.SendChatMessage(sIRCMessage, text[1], commands.Remove(0, 3, " | "));

                    if(!aliascommands.IsNullOrEmpty())
                        sSendMessage.SendChatMessage(sIRCMessage, text[6], aliascommands.Remove(0, 3, " | "));
                }
                else if(IsAdmin(sIRCMessage.Nick, AdminFlag.Operator))
                {
                    string commands = string.Empty;
                    string aliascommands = string.Empty;

                    foreach(var command in sIrcBase.Networks[sIRCMessage.ServerName].CommandMethodMap)
                    {
                        if(command.Value.Permission == CommandPermission.Normal ||
                           command.Value.Permission == CommandPermission.Administrator)
                            continue;

                        if(command.Key == "admin")
                            continue;

                        if(sIgnoreCommand.IsIgnore(command.Key))
                            continue;

                        var db = SchumixBase.DManager.QueryFirstRow("SELECT BaseCommand FROM alias_irc_command WHERE NewCommand = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(command.Key), sIRCMessage.ServerName);
                        if(!db.IsNull())
                        {
                            string basecommand = db["BaseCommand"].ToString();
                            aliascommands += " | " + IRCConfig.List[sIRCMessage.ServerName].CommandPrefix + command.Key + "->" + IRCConfig.List[sIRCMessage.ServerName].CommandPrefix + basecommand;
                            continue;
                        }

                        commands += " | " + IRCConfig.List[sIRCMessage.ServerName].CommandPrefix + command.Key;
                    }

                    sSendMessage.SendChatMessage(sIRCMessage, text[2]);
                    sSendMessage.SendChatMessage(sIRCMessage, text[3], commands.Remove(0, 3, " | "));

                    if(!aliascommands.IsNullOrEmpty())
                        sSendMessage.SendChatMessage(sIRCMessage, text[6], aliascommands.Remove(0, 3, " | "));
                }
                else if(IsAdmin(sIRCMessage.Nick, AdminFlag.Administrator))
                {
                    string commands = string.Empty;
                    string aliascommands = string.Empty;

                    foreach(var command in sIrcBase.Networks[sIRCMessage.ServerName].CommandMethodMap)
                    {
                        if(command.Value.Permission == CommandPermission.Normal)
                            continue;

                        if(command.Key == "admin")
                            continue;

                        if(sIgnoreCommand.IsIgnore(command.Key))
                            continue;

                        var db = SchumixBase.DManager.QueryFirstRow("SELECT BaseCommand FROM alias_irc_command WHERE NewCommand = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(command.Key), sIRCMessage.ServerName);
                        if(!db.IsNull())
                        {
                            string basecommand = db["BaseCommand"].ToString();
                            aliascommands += " | " + IRCConfig.List[sIRCMessage.ServerName].CommandPrefix + command.Key + "->" + IRCConfig.List[sIRCMessage.ServerName].CommandPrefix + basecommand;
                            continue;
                        }

                        commands += " | " + IRCConfig.List[sIRCMessage.ServerName].CommandPrefix + command.Key;
                    }

                    sSendMessage.SendChatMessage(sIRCMessage, text[4]);
                    sSendMessage.SendChatMessage(sIRCMessage, text[5], commands.Remove(0, 3, " | "));

                    if(!aliascommands.IsNullOrEmpty())
                        sSendMessage.SendChatMessage(sIRCMessage, text[6], aliascommands.Remove(0, 3, " | "));
                }
            }
        }