Aselia.UserCommands.MetaHandler.Handler C# (CSharp) Метод

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

public Handler ( object sender, ReceivedCommandEventArgs e ) : void
sender object
e ReceivedCommandEventArgs
Результат void
        public void Handler(object sender, ReceivedCommandEventArgs e)
        {
            if (e.Arguments.Length < 1)
            {
                e.User.SendNumeric(Numerics.ERR_NEEDMOREPARAMS, CMD, SYNTAX);
                return;
            }

            if (Protocol.CHANNEL_PREFIX_CHARS.Contains(e.Arguments[0][0]))
            {
                ChannelSurrogate target = e.Server.GetRegisteredChannel(e.Arguments[0]);
                if (target == null)
                {
                    e.User.SendNumeric(Numerics.ERR_NOSUCHCHANNEL, e.Arguments[0], ":That channel is not registered.");
                    return;
                }

                if (e.Arguments.Length < 2)
                {
                    SendMeta(e.User, target.Name, e.User.IsOwner(target) || e.User.Level >= Authorizations.NetworkOperator, target.Flags, target.Properties);
                }
                else
                {
                    char dir = e.Arguments[1][0];
                    string key;
                    if ((dir != '-' && dir != '+') || e.Arguments[1].Length < 2)
                    {
                        key = e.Arguments[1];
                        dir = '+';
                    }
                    else
                    {
                        key = e.Arguments[1].Substring(1);
                    }
                    if (key[0] != ':')
                    {
                        key = ":" + key;
                    }

                    if (e.Arguments.Length < 3)
                    {
                        SetFlag(e.User, dir, key, target.Flags, target.Properties);
                    }
                    else
                    {
                        SetProperty(e.User, dir, key, target.Flags, target.Properties, e.Arguments[2]);
                    }
                    target.Commit();
                }
            }
            else
            {
                UserSurrogate target = e.Server.GetRegisteredUser(e.Arguments[0]);
                if (target == null)
                {
                    e.User.SendNumeric(Numerics.ERR_NOSUCHACCOUNT, e.Arguments[0], ":That account is not registered.");
                    return;
                }

                if (e.Arguments.Length < 2)
                {
                    SendMeta(e.User, target.Mask.Account, e.User.Mask.Account == e.Arguments[0].ToLower() || e.User.Level >= Authorizations.NetworkOperator, target.Flags, target.Properties);
                }
                else
                {
                    char dir = e.Arguments[1][0];
                    string key;
                    if ((dir != '-' && dir != '+') || e.Arguments[1].Length < 2)
                    {
                        key = e.Arguments[1];
                        dir = '+';
                    }
                    else
                    {
                        key = e.Arguments[1].Substring(1);
                    }
                    if (key[0] != ':')
                    {
                        key = ":" + key;
                    }

                    if (e.Arguments.Length < 3)
                    {
                        SetFlag(e.User, dir, key, target.Flags, target.Properties);
                    }
                    else
                    {
                        SetProperty(e.User, dir, key, target.Flags, target.Properties, e.Arguments[2]);
                    }
                    target.Commit();
                }
            }
        }