Aselia.UserCommands.DropHandler.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.ErrorNeedMoreParams(CMD);
                return;
            }

            string id = e.Arguments[0].ToLower();
            if ("#&".Contains(id[0]))
            {
                e.User.SendNumeric(Numerics.ERR_COMMANDSPECIFIC, CMD, ":You cannot drop an unregistered channel.");
                return;
            }
            else if (".!".Contains(id[0]))
            {
                ChannelSurrogate channel = e.Server.GetRegisteredChannel(id);
                if (channel == null)
                {
                    e.User.SendNumeric(Numerics.ERR_NOSUCHCHANNEL, id, ":That channel is not registered.");
                    return;
                }

                if (e.User.Level < Authorizations.NetworkOperator)
                {
                    e.User.SendNumeric(Numerics.ERR_CHANOPPRIVSNEEDED, channel.Name, ":You must be a channel owner or IRCop to drop a channel.");
                    return;
                }

                if (channel is ChannelBase)
                {
                    ChannelBase cb = (ChannelBase)channel;
                    foreach (UserBase u in cb.Users.Values)
                    {
                        u.SendCommand("KICK", e.User.Mask, cb.Name, u.Mask.Nickname, "Channel dropped.");
                    }
                    cb.Dispose();
                }

                e.Server.Cache.Channels.Remove(id);

                e.User.SendNumeric(Numerics.RPL_CHANNELDROPPED, id, ":That channel was dropped.");
            }
            else if (id != e.User.Mask.Account && e.User.Level < Authorizations.NetworkOperator)
            {
                e.User.SendNumeric(Numerics.ERR_NOPRIVILEGES, ":You need to be logged in as that user or be an IRCop to drop that account.");
                return;
            }
            else
            {
                UserSurrogate user = e.Server.GetRegisteredUser(id);
                if (user == null)
                {
                    e.User.SendNumeric(Numerics.ERR_NOSUCHACCOUNT, id, ":That account does not exist.");
                    return;
                }

                user.Level = Authorizations.Unregistered;
                user.Commit();

                if (user is UserBase)
                {
                    e.User.SendNumeric(Numerics.RPL_ACCOUNTDROPPED, id, ":Your account was dropped.");
                }

                if (user != e.User)
                {
                    e.User.SendNumeric(Numerics.RPL_ACCOUNTDROPPED, id, ":That account was dropped.");
                }
            }
        }
DropHandler