Exemple #1
0
 protected virtual bool HideIfNotAdmin(RequireUserPermissionAttribute rupa, IGuildUser gu)
 {
     return(rupa != null &&
            rupa.GuildPermission != null &&
            rupa.GuildPermission.Value == GuildPermission.Administrator &&
            !gu.GuildPermissions.Administrator);
 }
Exemple #2
0
        public static bool AdminAttribute(RequireUserPermissionAttribute attribute)
        {
            if (!attribute.GuildPermission.HasValue)
            {
                return(false);
            }
            bool result = false;

            if (attribute.GuildPermission.Value == GuildPermission.Administrator)
            {
                result = true;
            }
            if (attribute.GuildPermission.Value == GuildPermission.BanMembers)
            {
                result = true;
            }
            if (attribute.GuildPermission.Value == GuildPermission.DeafenMembers)
            {
                result = true;
            }
            if (attribute.GuildPermission.Value == GuildPermission.KickMembers)
            {
                result = true;
            }
            if (attribute.GuildPermission.Value == GuildPermission.ManageChannels)
            {
                result = true;
            }
            if (attribute.GuildPermission.Value == GuildPermission.ManageGuild)
            {
                result = true;
            }
            if (attribute.GuildPermission.Value == GuildPermission.ManageMessages)
            {
                result = true;
            }
            if (attribute.GuildPermission.Value == GuildPermission.ManageNicknames)
            {
                result = true;
            }
            if (attribute.GuildPermission.Value == GuildPermission.ManageRoles)
            {
                result = true;
            }
            if (attribute.GuildPermission.Value == GuildPermission.ManageWebhooks)
            {
                result = true;
            }
            if (attribute.GuildPermission.Value == GuildPermission.MoveMembers)
            {
                result = true;
            }
            if (attribute.GuildPermission.Value == GuildPermission.MuteMembers)
            {
                result = true;
            }
            return(result);
        }
        public override async Task <PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo command, IServiceProvider services)
        {
            var guildAdminAttr   = new RequireUserPermissionAttribute(GuildPermission.Administrator);
            var guildAdminResult = await guildAdminAttr.CheckPermissionsAsync(context, command, services);

            if (guildAdminResult.IsSuccess)
            {
                return(PreconditionResult.FromSuccess());
            }

            var botOwnerAttr   = new RequireOwnerAttribute();
            var botOwnerResult = await botOwnerAttr.CheckPermissionsAsync(context, command, services);

            if (botOwnerResult.IsSuccess)
            {
                return(PreconditionResult.FromSuccess());
            }

            return(PreconditionResult.FromError(ErrorMessage ?? $"User requires administrator permission or has to be the bot owner."));
        }
        public async Task ListAllCommands(string hlp = null)
        {
            if (hlp == "?")
            {
                await SendHelpMessage($"Usage: {BotConfiguration.thisBotConfig.CommandIndicator}commands", "This command wiil give a  list of ALL available commands.", $"{BotConfiguration.thisBotConfig.CommandIndicator}commands");

                return;
            }

            string txt = "Here are all the commands I can find...";

            EmbedBuilder msg = GetMsg(defaultColor, $"Listing All Commands:-", txt);


            List <CommandInfo> commands = commandsService.Commands.ToList();

            foreach (CommandInfo command in commands)
            {
                string aliases = "";
                foreach (string alias in command.Aliases)
                {
                    aliases += $"{BotConfiguration.thisBotConfig.CommandIndicator}{alias}, ";
                }

                if (aliases.Length > 0)
                {
                    aliases = aliases.Substring(0, aliases.Length - 2);
                }

                RequireUserPermissionAttribute ruap = (RequireUserPermissionAttribute)command.Preconditions.SingleOrDefault(a => a is RequireUserPermissionAttribute);

                if (HideIfNotAdmin(ruap, Context.User as IGuildUser))
                {
                    continue;
                }

                msg.AddField($"{BotConfiguration.thisBotConfig.CommandIndicator}{command.Name}", $"Summary:\n{command.Summary.Replace("[~]", $"{BotConfiguration.thisBotConfig.CommandIndicator}")}\n\nAliases:\n{aliases}", true);
            }

            await SendMessageAsync(msg);
        }
Exemple #5
0
        protected List <CommandInfo> GetMyCommandsList()
        {
            List <CommandInfo> retVal = commandsService.Commands.Where(c => c.Module.Name == GetType().Name).ToList();

            // Check access rigts..
            IGuildUser gu = Context.User as IGuildUser;

            if (gu != null)
            {
                int cnt = retVal.Count;
                for (int c = cnt - 1; c >= 0; c--)
                {
                    CommandInfo cmd = retVal[c];
                    RequireUserPermissionAttribute ruap = (RequireUserPermissionAttribute)cmd.Preconditions.SingleOrDefault(a => a is RequireUserPermissionAttribute);

                    if (HideIfNotAdmin(ruap, gu))
                    {
                        retVal.Remove(cmd);
                    }
                }
            }

            return(retVal);
        }
Exemple #6
0
        public async Task Test()
        {
            List <CommandInfo> cmds      = CommandHandler.GetCommands();
            string             msg       = "User Commands:\n";
            string             adminCmds = "Admin Commands:\n";
            string             ownerCmds = "Owner Commands:\n";
            int x = 0;
            int y = 0;

            foreach (CommandInfo cmd in cmds)
            {
                if (cmd.Preconditions.Count > 0)
                {
                    foreach (PreconditionAttribute precondition in cmd.Preconditions)
                    {
                        if (precondition is RequireBotPermissionAttribute)
                        {
                            RequireBotPermissionAttribute attribute = precondition as RequireBotPermissionAttribute;
                            //msg += "*Requires Bot Permission: " + attribute.GuildPermission + "*\n";
                        }
                        else if (precondition is RequireUserPermissionAttribute)
                        {
                            RequireUserPermissionAttribute attribute = precondition as RequireUserPermissionAttribute;
                            //msg += "*Requires User Permission: " + attribute.GuildPermission + "*\n";
                            if (AdminAttribute(attribute))
                            {
                                adminCmds += "**__" + cmd.Name + "__**\n";
                                if (!string.IsNullOrEmpty(cmd.Summary))
                                {
                                    adminCmds += "*" + cmd.Summary + "*\n";
                                }
                                y++;
                            }
                            else
                            {
                                msg += "**__" + cmd.Name + "__**\n";
                                if (!string.IsNullOrEmpty(cmd.Summary))
                                {
                                    msg += "*" + cmd.Summary + "*\n";
                                }
                                x++;
                            }
                        }
                        else if (precondition is RequireOwnerAttribute)
                        {
                            RequireOwnerAttribute attribute = precondition as RequireOwnerAttribute;
                            ownerCmds += "**__" + cmd.Name + "__**\n";
                            if (!string.IsNullOrEmpty(cmd.Summary))
                            {
                                ownerCmds += "*" + cmd.Summary + "*\n";
                            }
                        }
                    }
                }
                else
                {
                    msg += "**__" + cmd.Name + "__**\n";
                    if (!string.IsNullOrEmpty(cmd.Summary))
                    {
                        msg += "*" + cmd.Summary + "*\n";
                    }
                    x++;
                }

                if (y > 10)
                {
                    adminCmds += "|";
                    y          = 0;
                }
                if (x > 10)
                {
                    msg += "|";
                    x    = 0;
                }
            }

            string       prefix = "/";
            ServerConfig config = null;

            if (!Context.IsPrivate)
            {
                config = ServerConfigs.GetConfig(Context.Guild);
            }
            if (config != null)
            {
                prefix = config.Prefix;
            }
            foreach (string s in SplitMessage(msg, '|'))
            {
                if (!string.IsNullOrEmpty(s))
                {
                    await Context.Channel.SendMessageAsync(string.Format(s, prefix));
                }
            }
            foreach (string s in SplitMessage(adminCmds, '|'))
            {
                if (!string.IsNullOrEmpty(s))
                {
                    await Context.Channel.SendMessageAsync(string.Format(s, prefix));
                }
            }
            await Context.Channel.SendMessageAsync(ownerCmds);
        }
Exemple #7
0
        public async Task Commandlist(params string[] parameters)
        {
            string dm = "​\nList of Commands\n"
                        + "━━━━━━━━━━━━━━━━━━━━━━"
                        + "\n\n";


            Type type = typeof(Tools);


            foreach (var method in type.GetMethods())
            {
                var attrs = System.Attribute.GetCustomAttributes(method);

                foreach (var attrib in attrs)
                {
                    if (attrib is CommandAttribute)
                    {
                        CommandAttribute a = (CommandAttribute)attrib;
                        dm += "!!" + a.Text + "\n";
                    }

                    if (attrib is AliasAttribute)
                    {
                        AliasAttribute a = (AliasAttribute)attrib;
                        dm += "aliases: ";
                        foreach (var alias in a.Aliases)
                        {
                            dm += "!!" + alias + ", ";
                        }
                        dm = dm.Remove(dm.Count() - 2);

                        dm += "\n";
                    }

                    if (attrib is SummaryAttribute)
                    {
                        SummaryAttribute a = (SummaryAttribute)attrib;
                        dm += a.Text + "\n";
                    }

                    if (attrib is RequireOwnerAttribute)
                    {
                        RequireOwnerAttribute a = (RequireOwnerAttribute)attrib;
                        dm += "Permitted users - Bot owner" + "\n";
                    }

                    if (attrib is RequireUserPermissionAttribute)
                    {
                        RequireUserPermissionAttribute a = (RequireUserPermissionAttribute)attrib;
                        dm += "Permitted users - ";
                        if (a.GuildPermission.Value == GuildPermission.Administrator)
                        {
                            dm += "Server Admins";
                        }

                        dm += "\n";
                    }

                    if (attrib is RequireRoleAttribute)
                    {
                        RequireRoleAttribute a = (RequireRoleAttribute)attrib;
                        dm += "Permitted users - " + a.name + "\n";
                    }
                }

                dm += "\n​";
            }
            dm += "\n\n​";
            await DmSplit(dm);
            await CommandStatus("DM Sent.", "Command List");
        }
Exemple #8
0
 public UserPermAttribute(ChannelPerm permission)
 {
     UserPermissionAttribute = new RequireUserPermissionAttribute((ChannelPermission)permission);
 }
Exemple #9
0
 public UserPermAttribute(GuildPerm permission)
 {
     UserPermissionAttribute = new RequireUserPermissionAttribute((GuildPermission)permission);
 }