protected virtual bool HideIfNotAdmin(RequireUserPermissionAttribute rupa, IGuildUser gu) { return(rupa != null && rupa.GuildPermission != null && rupa.GuildPermission.Value == GuildPermission.Administrator && !gu.GuildPermissions.Administrator); }
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); }
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); }
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); }
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"); }
public UserPermAttribute(ChannelPerm permission) { UserPermissionAttribute = new RequireUserPermissionAttribute((ChannelPermission)permission); }
public UserPermAttribute(GuildPerm permission) { UserPermissionAttribute = new RequireUserPermissionAttribute((GuildPermission)permission); }