Schumix.ExtraAddon.Commands.Functions.HandleAutoFunction C# (CSharp) Метод

HandleAutoFunction() публичный Метод

public HandleAutoFunction ( IRCMessage sIRCMessage ) : void
sIRCMessage Schumix.Framework.Irc.IRCMessage
Результат void
        public void HandleAutoFunction(IRCMessage sIRCMessage)
        {
            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;
            }

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

            var sMyChannelInfo = sIrcBase.Networks[sIRCMessage.ServerName].sMyChannelInfo;
            var sSender = sIrcBase.Networks[sIRCMessage.ServerName].sSender;

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

                if(IsAdmin(sIRCMessage.Nick, AdminFlag.HalfOperator))
                    sSendMessage.SendChatMessage(sIRCMessage, text[0]);
                else if(IsAdmin(sIRCMessage.Nick, AdminFlag.Operator))
                    sSendMessage.SendChatMessage(sIRCMessage, text[1]);
                else if(IsAdmin(sIRCMessage.Nick, AdminFlag.Administrator))
                    sSendMessage.SendChatMessage(sIRCMessage, text[1]);

                return;
            }

            if(sIRCMessage.Info[4].ToLower() == "hlmessage")
            {
                if(sIRCMessage.Info.Length < 6)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("No1Value", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return;
                }

                if(sIRCMessage.Info[5].ToLower() == "info")
                {
                    var db = SchumixBase.DManager.Query("SELECT Name, Enabled FROM hlmessage WHERE ServerName = '{0}'", sIRCMessage.ServerName);
                    if(!db.IsNull())
                    {
                        string names = string.Empty;

                        foreach(DataRow row in db.Rows)
                        {
                            string name = row["Name"].ToString();
                            string status = row["Enabled"].ToString();
                            names += ", " + name + SchumixBase.Colon + status;
                        }

                        sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetCommandText("autofunction/hlmessage/info", sIRCMessage.Channel, sIRCMessage.ServerName), names.Remove(0, 2, ", "));
                    }
                    else
                        sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("FaultyQuery", sIRCMessage.Channel, sIRCMessage.ServerName));
                }
                else if(sIRCMessage.Info[5].ToLower() == "update")
                {
                    var db = SchumixBase.DManager.Query("SELECT Name FROM admins WHERE ServerName = '{0}'", sIRCMessage.ServerName);
                    if(!db.IsNull())
                    {
                        foreach(DataRow row in db.Rows)
                        {
                            string name = row["Name"].ToString();

                            var db1 = SchumixBase.DManager.QueryFirstRow("SELECT 1 FROM hlmessage WHERE Name = '{0}' And ServerName = '{1}'", name, sIRCMessage.ServerName);
                            if(db1.IsNull())
                                SchumixBase.DManager.Insert("`hlmessage`(ServerId, ServerName, Name, Enabled)", sIRCMessage.ServerId, sIRCMessage.ServerName, name, SchumixBase.Off);
                        }

                        sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetCommandText("autofunction/hlmessage/update", sIRCMessage.Channel, sIRCMessage.ServerName));
                    }
                    else
                        sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("FaultyQuery", sIRCMessage.Channel, sIRCMessage.ServerName));
                }
                else if(sIRCMessage.Info[5].ToLower() == "function")
                {
                    var text = sLManager.GetCommandTexts("autofunction/hlmessage/function", 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 < 7)
                    {
                        sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoFunctionStatus", sIRCMessage.Channel, sIRCMessage.ServerName));
                        return;
                    }

                    string status = sIRCMessage.Info[6].ToLower();
                    if(status == SchumixBase.On || status == SchumixBase.Off)
                    {
                        bool enabled = false;
                        string name = sIRCMessage.Nick.ToLower();
                        var db = SchumixBase.DManager.QueryFirstRow("SELECT Enabled FROM hlmessage WHERE Name = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(name), sIRCMessage.ServerName);

                        if(!db.IsNull())
                            enabled = db["Enabled"].ToString().ToLower() == SchumixBase.On;
                        else
                        {
                            sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("FaultyQuery", sIRCMessage.Channel, sIRCMessage.ServerName));
                            return;
                        }

                        if(enabled && status == SchumixBase.On)
                        {
                            sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("FunctionAlreadyTurnedOn", sIRCMessage.Channel, sIRCMessage.ServerName));
                            return;
                        }
                        else if(!enabled && status == SchumixBase.Off)
                        {
                            sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("FunctionAlreadyTurnedOff", sIRCMessage.Channel, sIRCMessage.ServerName));
                            return;
                        }

                        SchumixBase.DManager.Update("hlmessage", string.Format("Enabled = '{0}'", status), string.Format("Name = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(name), sIRCMessage.ServerName));

                        if(status == SchumixBase.On)
                            sSendMessage.SendChatMessage(sIRCMessage, text[0], name);
                        else
                            sSendMessage.SendChatMessage(sIRCMessage, text[1], name);
                    }
                    else
                        sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("WrongSwitch", sIRCMessage.Channel, sIRCMessage.ServerName));
                }
                else
                {
                    SchumixBase.DManager.Update("hlmessage", string.Format("Info = '{0}', Enabled = 'on'", sUtilities.SqlEscape(sIRCMessage.Info.SplitToString(5, SchumixBase.Space))), string.Format("Name = '{0}' And ServerName = '{1}'", sIRCMessage.SqlEscapeNick.ToLower(), sIRCMessage.ServerName));
                    SchumixBase.DManager.Update("schumix", "FunctionStatus = 'on'", string.Format("FunctionName = 'autohl' And ServerName = '{0}'", sIRCMessage.ServerName));
                    SchumixBase.DManager.Update("channels", string.Format("Functions = '{0}'", sMyChannelInfo.ChannelFunctions(IChannelFunctions.Autohl, SchumixBase.On, sIRCMessage.Channel)), string.Format("Channel = '{0}' And ServerName = '{1}'", sIRCMessage.Channel.ToLower(), sIRCMessage.ServerName));
                    sMyChannelInfo.FunctionsReload();
                    sMyChannelInfo.ChannelFunctionsReload();
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetCommandText("autofunction/hlmessage", sIRCMessage.Channel, sIRCMessage.ServerName));
                }
            }

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

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

            if(sIRCMessage.Info[4].ToLower() == "kick")
            {
                if(sIRCMessage.Info.Length < 6)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("No1Value", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return;
                }

                if(sIRCMessage.Info[5].ToLower() == "add")
                {
                    var text = sLManager.GetCommandTexts("autofunction/kick/add", 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 < 7)
                    {
                        sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoName", sIRCMessage.Channel, sIRCMessage.ServerName));
                        return;
                    }

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

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

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

                    SchumixBase.DManager.Insert("`kicklist`(ServerId, ServerName, Name, Channel, Reason)", sIRCMessage.ServerId, sIRCMessage.ServerName, sUtilities.SqlEscape(sIRCMessage.Info[6].ToLower()), sIRCMessage.Channel.ToLower(), sUtilities.SqlEscape(sIRCMessage.Info.SplitToString(7, SchumixBase.Space)));
                    sSendMessage.SendChatMessage(sIRCMessage, text[1], sIRCMessage.Info[6]);
                }
                else if(sIRCMessage.Info[5].ToLower() == "remove")
                {
                    var text = sLManager.GetCommandTexts("autofunction/kick/remove", 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 < 7)
                    {
                        sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoName", sIRCMessage.Channel, sIRCMessage.ServerName));
                        return;
                    }

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

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

                    SchumixBase.DManager.Delete("kicklist", string.Format("Name = '{0}' AND Channel = '{1}' And ServerName = '{2}'", sUtilities.SqlEscape(sIRCMessage.Info[6].ToLower()), sIRCMessage.Channel.ToLower(), sIRCMessage.ServerName));
                    sSendMessage.SendChatMessage(sIRCMessage, text[1], sIRCMessage.Info[6]);
                }
                else if(sIRCMessage.Info[5].ToLower() == "list")
                {
                    var db = SchumixBase.DManager.Query("SELECT Name FROM kicklist WHERE Channel = '{0}' And ServerName = '{1}'", sIRCMessage.Channel.ToLower(), sIRCMessage.ServerName);
                    if(!db.IsNull())
                    {
                        string names = string.Empty;

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

                        if(names.IsNullOrEmpty())
                            sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetCommandText("autofunction/kick/list", sIRCMessage.Channel, sIRCMessage.ServerName), sLConsole.Other("Nobody"));
                        else
                            sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetCommandText("autofunction/kick/list", sIRCMessage.Channel, sIRCMessage.ServerName), names.Remove(0, 2, ", "));
                    }
                    else
                        sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("FaultyQuery", sIRCMessage.Channel, sIRCMessage.ServerName));
                }
                else if(sIRCMessage.Info[5].ToLower() == "channel")
                {
                    if(sIRCMessage.Info.Length < 7)
                    {
                        sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoChannelName", sIRCMessage.Channel, sIRCMessage.ServerName));
                        return;
                    }

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

                    if(sIRCMessage.Info[7].ToLower() == "add")
                    {
                        var text = sLManager.GetCommandTexts("autofunction/kick/channel/add", 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 < 9)
                        {
                            sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoName", sIRCMessage.Channel, sIRCMessage.ServerName));
                            return;
                        }

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

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

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

                        SchumixBase.DManager.Insert("`kicklist`(ServerId, ServerName, Name, Channel, Reason)", sIRCMessage.ServerId, sIRCMessage.ServerName, sUtilities.SqlEscape(sIRCMessage.Info[8].ToLower()), sUtilities.SqlEscape(sIRCMessage.Info[6].ToLower()), sUtilities.SqlEscape(sIRCMessage.Info.SplitToString(9, SchumixBase.Space)));
                        sSendMessage.SendChatMessage(sIRCMessage, text[1], sIRCMessage.Info[8]);
                    }
                    else if(sIRCMessage.Info[7].ToLower() == "remove")
                    {
                        var text = sLManager.GetCommandTexts("autofunction/kick/channel/remove", 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 < 9)
                        {
                            sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoName", sIRCMessage.Channel, sIRCMessage.ServerName));
                            return;
                        }

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

                        var db = SchumixBase.DManager.QueryFirstRow("SELECT 1 FROM kicklist WHERE Name = '{0}' AND Channel = '{1}' And ServerName = '{2}'", sUtilities.SqlEscape(sIRCMessage.Info[8].ToLower()), sUtilities.SqlEscape(sIRCMessage.Info[6].ToLower()), sIRCMessage.ServerName);
                        if(db.IsNull())
                        {
                            sSendMessage.SendChatMessage(sIRCMessage, text[0]);
                            return;
                        }

                        SchumixBase.DManager.Delete("kicklist", string.Format("Name = '{0}' AND Channel = '{1}' And ServerName = '{2}'", sUtilities.SqlEscape(sIRCMessage.Info[8].ToLower()), sUtilities.SqlEscape(sIRCMessage.Info[6].ToLower()), sIRCMessage.ServerName));
                        sSendMessage.SendChatMessage(sIRCMessage, text[1], sIRCMessage.Info[8]);
                    }
                    else if(sIRCMessage.Info[7].ToLower() == "list")
                    {
                        var text = sLManager.GetCommandTexts("autofunction/kick/channel/list", sIRCMessage.Channel, sIRCMessage.ServerName);
                        if(text.Length < 2)
                        {
                            sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                            return;
                        }

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

                        var db0 = SchumixBase.DManager.QueryFirstRow("SELECT 1 FROM kicklist WHERE Channel = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(sIRCMessage.Info[6].ToLower()), sIRCMessage.ServerName);
                        if(db0.IsNull())
                        {
                            sSendMessage.SendChatMessage(sIRCMessage, text[1]);
                            return;
                        }

                        var db = SchumixBase.DManager.Query("SELECT Name FROM kicklist WHERE Channel = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(sIRCMessage.Info[6].ToLower()), sIRCMessage.ServerName);
                        if(!db.IsNull())
                        {
                            string names = string.Empty;

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

                            if(names.IsNullOrEmpty())
                                sSendMessage.SendChatMessage(sIRCMessage, text[0], sLConsole.Other("Nobody"));
                            else
                                sSendMessage.SendChatMessage(sIRCMessage, text[0], names.Remove(0, 2, ", "));
                        }
                        else
                            sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("FaultyQuery", sIRCMessage.Channel, sIRCMessage.ServerName));
                    }
                }
            }
            else if(sIRCMessage.Info[4].ToLower() == "mode")
            {
                if(sIRCMessage.Info.Length < 6)
                {
                    sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("No1Value", sIRCMessage.Channel, sIRCMessage.ServerName));
                    return;
                }

                if(sIRCMessage.Info[5].ToLower() == "add")
                {
                    var text = sLManager.GetCommandTexts("autofunction/mode/add", 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 < 7)
                    {
                        sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoName", sIRCMessage.Channel, sIRCMessage.ServerName));
                        return;
                    }

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

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

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

                    SchumixBase.DManager.Insert("`modelist`(ServerId, ServerName, Name, Channel, Rank)", sIRCMessage.ServerId, sIRCMessage.ServerName, sUtilities.SqlEscape(sIRCMessage.Info[6].ToLower()), sIRCMessage.Channel.ToLower(), sUtilities.SqlEscape(sIRCMessage.Info[7].ToLower()));
                    sSendMessage.SendChatMessage(sIRCMessage, text[1], sIRCMessage.Info[6]);
                }
                else if(sIRCMessage.Info[5].ToLower() == "change")
                {
                    var text = sLManager.GetCommandTexts("autofunction/mode/change", 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 < 7)
                    {
                        sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoName", sIRCMessage.Channel, sIRCMessage.ServerName));
                        return;
                    }

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

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

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

                    SchumixBase.DManager.Update("modelist", string.Format("Rank = {0}", sUtilities.SqlEscape(sIRCMessage.Info[7].ToLower())), string.Format("Name = '{0}' AND Channel = '{1}' And ServerName = '{2}'", sUtilities.SqlEscape(sIRCMessage.Info[6].ToLower()), sIRCMessage.Channel.ToLower(), sIRCMessage.ServerName));
                    sSendMessage.SendChatMessage(sIRCMessage, text[1], sIRCMessage.Info[6], sIRCMessage.Info[7].ToLower());
                }
                else if(sIRCMessage.Info[5].ToLower() == "remove")
                {
                    var text = sLManager.GetCommandTexts("autofunction/mode/remove", 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 < 7)
                    {
                        sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoName", sIRCMessage.Channel, sIRCMessage.ServerName));
                        return;
                    }

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

                    var db = SchumixBase.DManager.QueryFirstRow("SELECT Rank FROM modelist WHERE Name = '{0}' AND Channel = '{1}' And ServerName = '{2}'", sUtilities.SqlEscape(sIRCMessage.Info[6].ToLower()), sIRCMessage.Channel.ToLower(), sIRCMessage.ServerName);
                    if(db.IsNull())
                    {
                        sSendMessage.SendChatMessage(sIRCMessage, text[0]);
                        return;
                    }
                    else
                    {
                        string rank = db["Rank"].ToString();
                        if(rank.Substring(0, 1) == Rfc2812Util.ModeActionToChar(ModeAction.Add).ToString())
                            sSender.Mode(sIRCMessage.Channel.ToLower(), Rfc2812Util.ModeActionToChar(ModeAction.Remove) + rank.Remove(0, 1, Rfc2812Util.ModeActionToChar(ModeAction.Add)), sIRCMessage.Info[6].ToLower());
                    }

                    SchumixBase.DManager.Delete("modelist", string.Format("Name = '{0}' AND Channel = '{1}' And ServerName = '{2}'", sUtilities.SqlEscape(sIRCMessage.Info[6].ToLower()), sIRCMessage.Channel.ToLower(), sIRCMessage.ServerName));
                    sSendMessage.SendChatMessage(sIRCMessage, text[1], sIRCMessage.Info[6]);
                }
                else if(sIRCMessage.Info[5].ToLower() == "list")
                {
                    var text = sLManager.GetCommandTexts("autofunction/mode/list", sIRCMessage.Channel, sIRCMessage.ServerName);
                    if(text.Length < 5)
                    {
                        sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                        return;
                    }

                    var db = SchumixBase.DManager.Query("SELECT Name, Rank FROM modelist WHERE Channel = '{0}' And ServerName = '{1}'", sIRCMessage.Channel.ToLower(), sIRCMessage.ServerName);
                    if(!db.IsNull())
                    {
                        string voices = string.Empty;
                        string halfoperators = string.Empty;
                        string operators = string.Empty;
                        string admins = string.Empty;
                        string owners = string.Empty;

                        foreach(DataRow row in db.Rows)
                        {
                            string rank = row["Rank"].ToString().Length > 1 ? row["Rank"].ToString().Remove(0, 1) : row["Rank"].ToString();

                            if(rank.Length >= 1 && rank.Substring(0, 1) == Rfc2812Util.ChannelModeToChar(ChannelMode.Voice).ToString())
                            {
                                voices += ", " + row["Name"].ToString();
                                continue;
                            }
                            else if(rank.Length >= 1 && rank.Substring(0, 1) == Rfc2812Util.ChannelModeToChar(ChannelMode.HalfChannelOperator).ToString())
                            {
                                halfoperators += ", " + row["Name"].ToString();
                                continue;
                            }
                            else if(rank.Length >= 1 && rank.Substring(0, 1) == Rfc2812Util.ChannelModeToChar(ChannelMode.ChannelOperator).ToString())
                            {
                                operators += ", " + row["Name"].ToString();
                                continue;
                            }
                            else if(rank.Length >= 1 && rank.Substring(0, 1) == "a")
                            {
                                admins += ", " + row["Name"].ToString();
                                continue;
                            }
                            else if(rank.Length >= 1 && rank.Substring(0, 1) == "q")
                            {
                                owners += ", " + row["Name"].ToString();
                                continue;
                            }
                        }

                        if(voices.IsNullOrEmpty())
                            sSendMessage.SendChatMessage(sIRCMessage, text[0], sLConsole.Other("Nobody"));
                        else
                            sSendMessage.SendChatMessage(sIRCMessage, text[0], voices.Remove(0, 2, ", "));

                        if(halfoperators.IsNullOrEmpty())
                            sSendMessage.SendChatMessage(sIRCMessage, text[1], sLConsole.Other("Nobody"));
                        else
                            sSendMessage.SendChatMessage(sIRCMessage, text[1], halfoperators.Remove(0, 2, ", "));

                        if(operators.IsNullOrEmpty())
                            sSendMessage.SendChatMessage(sIRCMessage, text[2], sLConsole.Other("Nobody"));
                        else
                            sSendMessage.SendChatMessage(sIRCMessage, text[2], operators.Remove(0, 2, ", "));

                        if(admins.IsNullOrEmpty())
                            sSendMessage.SendChatMessage(sIRCMessage, text[3], sLConsole.Other("Nobody"));
                        else
                            sSendMessage.SendChatMessage(sIRCMessage, text[3], admins.Remove(0, 2, ", "));

                        if(owners.IsNullOrEmpty())
                            sSendMessage.SendChatMessage(sIRCMessage, text[4], sLConsole.Other("Nobody"));
                        else
                            sSendMessage.SendChatMessage(sIRCMessage, text[4], owners.Remove(0, 2, ", "));
                    }
                    else
                        sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("FaultyQuery", sIRCMessage.Channel, sIRCMessage.ServerName));
                }
                else if(sIRCMessage.Info[5].ToLower() == "channel")
                {
                    if(sIRCMessage.Info.Length < 7)
                    {
                        sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoChannelName", sIRCMessage.Channel, sIRCMessage.ServerName));
                        return;
                    }

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

                    if(sIRCMessage.Info[7].ToLower() == "add")
                    {
                        var text = sLManager.GetCommandTexts("autofunction/mode/channel/add", 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 < 9)
                        {
                            sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoName", sIRCMessage.Channel, sIRCMessage.ServerName));
                            return;
                        }

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

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

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

                        SchumixBase.DManager.Insert("`modelist`(ServerId, ServerName, Name, Channel, Rank)", sIRCMessage.ServerId, sIRCMessage.ServerName, sUtilities.SqlEscape(sIRCMessage.Info[8].ToLower()), sUtilities.SqlEscape(sIRCMessage.Info[6].ToLower()), sUtilities.SqlEscape(sIRCMessage.Info[9]));
                        sSendMessage.SendChatMessage(sIRCMessage, text[1], sIRCMessage.Info[8]);
                    }
                    else if(sIRCMessage.Info[7].ToLower() == "change")
                    {
                        var text = sLManager.GetCommandTexts("autofunction/mode/channel/change", 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 < 9)
                        {
                            sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoName", sIRCMessage.Channel, sIRCMessage.ServerName));
                            return;
                        }

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

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

                        var db = SchumixBase.DManager.QueryFirstRow("SELECT 1 FROM modelist WHERE Name = '{0}' AND Channel = '{1}' And ServerName = '{2}'", sUtilities.SqlEscape(sIRCMessage.Info[8].ToLower()), sUtilities.SqlEscape(sIRCMessage.Info[6].ToLower()), sIRCMessage.ServerName);
                        if(db.IsNull())
                        {
                            sSendMessage.SendChatMessage(sIRCMessage, text[0]);
                            return;
                        }

                        SchumixBase.DManager.Update("modelist", string.Format("Rank = {0}", sUtilities.SqlEscape(sIRCMessage.Info[9].ToLower())), string.Format("Name = '{0}' AND Channel = '{1}' And ServerName = '{2}'", sUtilities.SqlEscape(sIRCMessage.Info[8].ToLower()), sUtilities.SqlEscape(sIRCMessage.Info[6].ToLower()), sIRCMessage.ServerName));
                        sSendMessage.SendChatMessage(sIRCMessage, text[1], sIRCMessage.Info[8], sIRCMessage.Info[9].ToLower());
                    }
                    else if(sIRCMessage.Info[7].ToLower() == "remove")
                    {
                        var text = sLManager.GetCommandTexts("autofunction/mode/channel/remove", 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 < 9)
                        {
                            sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("NoName", sIRCMessage.Channel, sIRCMessage.ServerName));
                            return;
                        }

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

                        var db = SchumixBase.DManager.QueryFirstRow("SELECT Rank FROM modelist WHERE Name = '{0}' AND Channel = '{1}' And ServerName = '{2}'", sUtilities.SqlEscape(sIRCMessage.Info[8].ToLower()), sUtilities.SqlEscape(sIRCMessage.Info[6].ToLower()), sIRCMessage.ServerName);
                        if(db.IsNull())
                        {
                            sSendMessage.SendChatMessage(sIRCMessage, text[0]);
                            return;
                        }
                        else
                        {
                            string rank = db["Rank"].ToString();
                            if(rank.Substring(0, 1) == Rfc2812Util.ModeActionToChar(ModeAction.Add).ToString())
                                sSender.Mode(sIRCMessage.Info[6].ToLower(), Rfc2812Util.ModeActionToChar(ModeAction.Remove) + rank.Remove(0, 1, Rfc2812Util.ModeActionToChar(ModeAction.Add)), sIRCMessage.Info[8].ToLower());
                        }

                        SchumixBase.DManager.Delete("modelist", string.Format("Name = '{0}' AND Channel = '{1}' And ServerName = '{2}'", sUtilities.SqlEscape(sIRCMessage.Info[8].ToLower()), sUtilities.SqlEscape(sIRCMessage.Info[6].ToLower()), sIRCMessage.ServerName));
                        sSendMessage.SendChatMessage(sIRCMessage, text[1], sIRCMessage.Info[8]);
                    }
                    else if(sIRCMessage.Info[7].ToLower() == "list")
                    {
                        var text = sLManager.GetCommandTexts("autofunction/mode/channel/list", sIRCMessage.Channel, sIRCMessage.ServerName);
                        if(text.Length < 6)
                        {
                            sSendMessage.SendChatMessage(sIRCMessage, sLConsole.Translations("NoFound2", sLManager.GetChannelLocalization(sIRCMessage.Channel, sIRCMessage.ServerName)));
                            return;
                        }

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

                        var db0 = SchumixBase.DManager.QueryFirstRow("SELECT 1 FROM modelist WHERE Channel = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(sIRCMessage.Info[6].ToLower()), sIRCMessage.ServerName);
                        if(db0.IsNull())
                        {
                            sSendMessage.SendChatMessage(sIRCMessage, text[5]);
                            return;
                        }

                        var db = SchumixBase.DManager.Query("SELECT Name, Rank FROM modelist WHERE Channel = '{0}' And ServerName = '{1}'", sUtilities.SqlEscape(sIRCMessage.Info[6].ToLower()), sIRCMessage.ServerName);
                        if(!db.IsNull())
                        {
                            string voices = string.Empty;
                            string halfoperators = string.Empty;
                            string operators = string.Empty;
                            string admins = string.Empty;
                            string owners = string.Empty;

                            foreach(DataRow row in db.Rows)
                            {
                                string rank = row["Rank"].ToString().Length > 1 ? row["Rank"].ToString().Remove(0, 1) : row["Rank"].ToString();

                                if(rank.Length >= 1 && rank.Substring(0, 1) == Rfc2812Util.ChannelModeToChar(ChannelMode.Voice).ToString())
                                {
                                    voices += ", " + row["Name"].ToString();
                                    continue;
                                }
                                else if(rank.Length >= 1 && rank.Substring(0, 1) == Rfc2812Util.ChannelModeToChar(ChannelMode.HalfChannelOperator).ToString())
                                {
                                    halfoperators += ", " + row["Name"].ToString();
                                    continue;
                                }
                                else if(rank.Length >= 1 && rank.Substring(0, 1) == Rfc2812Util.ChannelModeToChar(ChannelMode.ChannelOperator).ToString())
                                {
                                    operators += ", " + row["Name"].ToString();
                                    continue;
                                }
                                else if(rank.Length >= 1 && rank.Substring(0, 1) == "a")
                                {
                                    admins += ", " + row["Name"].ToString();
                                    continue;
                                }
                                else if(rank.Length >= 1 && rank.Substring(0, 1) == "q")
                                {
                                    owners += ", " + row["Name"].ToString();
                                    continue;
                                }
                            }

                            if(voices.IsNullOrEmpty())
                                sSendMessage.SendChatMessage(sIRCMessage, text[0], sLConsole.Other("Nobody"));
                            else
                                sSendMessage.SendChatMessage(sIRCMessage, text[0], voices.Remove(0, 2, ", "));

                            if(halfoperators.IsNullOrEmpty())
                                sSendMessage.SendChatMessage(sIRCMessage, text[1], sLConsole.Other("Nobody"));
                            else
                                sSendMessage.SendChatMessage(sIRCMessage, text[1], halfoperators.Remove(0, 2, ", "));

                            if(operators.IsNullOrEmpty())
                                sSendMessage.SendChatMessage(sIRCMessage, text[2], sLConsole.Other("Nobody"));
                            else
                                sSendMessage.SendChatMessage(sIRCMessage, text[2], operators.Remove(0, 2, ", "));

                            if(admins.IsNullOrEmpty())
                                sSendMessage.SendChatMessage(sIRCMessage, text[3], sLConsole.Other("Nobody"));
                            else
                                sSendMessage.SendChatMessage(sIRCMessage, text[3], admins.Remove(0, 2, ", "));

                            if(owners.IsNullOrEmpty())
                                sSendMessage.SendChatMessage(sIRCMessage, text[4], sLConsole.Other("Nobody"));
                            else
                                sSendMessage.SendChatMessage(sIRCMessage, text[4], owners.Remove(0, 2, ", "));
                        }
                        else
                            sSendMessage.SendChatMessage(sIRCMessage, sLManager.GetWarningText("FaultyQuery", sIRCMessage.Channel, sIRCMessage.ServerName));
                    }
                }
            }
        }