Permissions now friendly to custom reactions (soon™️)
This commit is contained in:
		@@ -19,8 +19,19 @@ namespace NadekoBot.Modules.Help
 | 
			
		||||
    {
 | 
			
		||||
        public string HelpString {
 | 
			
		||||
            get {
 | 
			
		||||
                var str = "To add me to your server, use this link -> <https://discordapp.com/oauth2/authorize?client_id={0}&scope=bot&permissions=66186303>\n";
 | 
			
		||||
                return str + String.Format(str, NadekoBot.Credentials.ClientId);
 | 
			
		||||
                var str = @"To add me to your server, use this link -> <https://discordapp.com/oauth2/authorize?client_id={0}&scope=bot&permissions=66186303>
 | 
			
		||||
You can use `{1}modules` command to see a list of all modules.
 | 
			
		||||
You can use `{1}commands ModuleName`
 | 
			
		||||
(for example `{1}commands Administration`) to see a list of all of the commands in that module.
 | 
			
		||||
For a specific command help, use {1}h ""Command name"" (for example {1}h !!q)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
**LIST OF COMMANDS CAN BE FOUND ON THIS LINK**
 | 
			
		||||
<https://github.com/Kwoth/NadekoBot/blob/master/commandlist.md>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Nadeko Support Server: https://discord.gg/0ehQwTK2RBjAxzEY";
 | 
			
		||||
                return String.Format(str, NadekoBot.Credentials.ClientId, NadekoBot.ModulePrefixes[typeof(Help).Name]);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        public Help(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client)
 | 
			
		||||
 
 | 
			
		||||
@@ -17,10 +17,17 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
        {
 | 
			
		||||
            var perms = permsEnumerable as List<Permission> ?? permsEnumerable.ToList();
 | 
			
		||||
            int throwaway;
 | 
			
		||||
            return perms.CheckPermissions(message, command, out throwaway);
 | 
			
		||||
            return perms.CheckPermissions(message, command.Name, command.Module.Name, out throwaway);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static bool CheckPermissions(this IEnumerable<Permission> permsEnumerable, IUserMessage message, Command command, out int permIndex)
 | 
			
		||||
        public static bool CheckPermissions(this IEnumerable<Permission> permsEnumerable, IUserMessage message, string commandName, string moduleName)
 | 
			
		||||
        {
 | 
			
		||||
            var perms = permsEnumerable as List<Permission> ?? permsEnumerable.ToList();
 | 
			
		||||
            int throwaway;
 | 
			
		||||
            return perms.CheckPermissions(message, commandName, moduleName, out throwaway);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static bool CheckPermissions(this IEnumerable<Permission> permsEnumerable, IUserMessage message, string commandName, string moduleName, out int permIndex)
 | 
			
		||||
        {
 | 
			
		||||
            var perms = permsEnumerable as List<Permission> ?? permsEnumerable.ToList();
 | 
			
		||||
 | 
			
		||||
@@ -28,7 +35,7 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
            {
 | 
			
		||||
                var perm = perms[i];
 | 
			
		||||
 | 
			
		||||
                var result = perm.CheckPermission(message, command);
 | 
			
		||||
                var result = perm.CheckPermission(message, commandName, moduleName);
 | 
			
		||||
 | 
			
		||||
                if (result == null)
 | 
			
		||||
                {
 | 
			
		||||
@@ -47,12 +54,12 @@ namespace NadekoBot.Modules.Permissions
 | 
			
		||||
        //null = not applicable
 | 
			
		||||
        //true = applicable, allowed
 | 
			
		||||
        //false = applicable, not allowed
 | 
			
		||||
        public static bool? CheckPermission(this Permission perm, IUserMessage message, Command command)
 | 
			
		||||
        public static bool? CheckPermission(this Permission perm, IUserMessage message, string commandName, string moduleName)
 | 
			
		||||
        {
 | 
			
		||||
            if (!((perm.SecondaryTarget == SecondaryPermissionType.Command &&
 | 
			
		||||
                    perm.SecondaryTargetName.ToLowerInvariant() == command.Text.ToLowerInvariant()) ||
 | 
			
		||||
                    perm.SecondaryTargetName.ToLowerInvariant() == commandName.ToLowerInvariant()) ||
 | 
			
		||||
                (perm.SecondaryTarget == SecondaryPermissionType.Module &&
 | 
			
		||||
                    perm.SecondaryTargetName.ToLowerInvariant() == command.Module.Name.ToLowerInvariant()) ||
 | 
			
		||||
                    perm.SecondaryTargetName.ToLowerInvariant() == moduleName.ToLowerInvariant()) ||
 | 
			
		||||
                    perm.SecondaryTarget == SecondaryPermissionType.AllModules))
 | 
			
		||||
                return null;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -164,7 +164,7 @@ namespace NadekoBot.Services
 | 
			
		||||
                if (guild != null)
 | 
			
		||||
                {
 | 
			
		||||
                    int index;
 | 
			
		||||
                    if (!rootPerm.AsEnumerable().CheckPermissions(message, cmd, out index))
 | 
			
		||||
                    if (!rootPerm.AsEnumerable().CheckPermissions(message, cmd.Name, cmd.Module.Name, out index))
 | 
			
		||||
                    {
 | 
			
		||||
                        var returnMsg = $"Permission number #{index} **{rootPerm.GetAt(index).GetCommand()}** is preventing this action.";
 | 
			
		||||
                        return new Tuple<Command, IResult>(cmd, SearchResult.FromError(CommandError.Exception, returnMsg));
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user