mirror of
				https://github.com/Rapptz/discord.py.git
				synced 2025-10-24 18:13:00 +00:00 
			
		
		
		
	[commands] Change GroupMixin.commands to all_commands
This is a breaking change as GroupMixin.commands now returns a set of unique Command objects.
This commit is contained in:
		| @@ -93,7 +93,7 @@ def _default_help_command(ctx, *commands : str): | |||||||
|         if name in bot.cogs: |         if name in bot.cogs: | ||||||
|             command = bot.cogs[name] |             command = bot.cogs[name] | ||||||
|         else: |         else: | ||||||
|             command = bot.commands.get(name) |             command = bot.all_commands.get(name) | ||||||
|             if command is None: |             if command is None: | ||||||
|                 yield from destination.send(bot.command_not_found.format(name)) |                 yield from destination.send(bot.command_not_found.format(name)) | ||||||
|                 return |                 return | ||||||
| @@ -101,7 +101,7 @@ def _default_help_command(ctx, *commands : str): | |||||||
|         pages = yield from bot.formatter.format_help_for(ctx, command) |         pages = yield from bot.formatter.format_help_for(ctx, command) | ||||||
|     else: |     else: | ||||||
|         name = _mention_pattern.sub(repl, commands[0]) |         name = _mention_pattern.sub(repl, commands[0]) | ||||||
|         command = bot.commands.get(name) |         command = bot.all_commands.get(name) | ||||||
|         if command is None: |         if command is None: | ||||||
|             yield from destination.send(bot.command_not_found.format(name)) |             yield from destination.send(bot.command_not_found.format(name)) | ||||||
|             return |             return | ||||||
| @@ -109,7 +109,7 @@ def _default_help_command(ctx, *commands : str): | |||||||
|         for key in commands[1:]: |         for key in commands[1:]: | ||||||
|             try: |             try: | ||||||
|                 key = _mention_pattern.sub(repl, key) |                 key = _mention_pattern.sub(repl, key) | ||||||
|                 command = command.commands.get(key) |                 command = command.all_commands.get(key) | ||||||
|                 if command is None: |                 if command is None: | ||||||
|                     yield from destination.send(bot.command_not_found.format(key)) |                     yield from destination.send(bot.command_not_found.format(key)) | ||||||
|                     return |                     return | ||||||
| @@ -564,7 +564,7 @@ class BotBase(GroupMixin): | |||||||
|                 self.remove_cog(cogname) |                 self.remove_cog(cogname) | ||||||
|  |  | ||||||
|         # first remove all the commands from the module |         # first remove all the commands from the module | ||||||
|         for command in self.commands.copy().values(): |         for command in self.all_commands.copy().values(): | ||||||
|             if command.module is lib: |             if command.module is lib: | ||||||
|                 command.module = None |                 command.module = None | ||||||
|                 if isinstance(command, GroupMixin): |                 if isinstance(command, GroupMixin): | ||||||
| @@ -676,7 +676,7 @@ class BotBase(GroupMixin): | |||||||
|         invoker = view.get_word() |         invoker = view.get_word() | ||||||
|         ctx.invoked_with = invoker |         ctx.invoked_with = invoker | ||||||
|         ctx.prefix = invoked_prefix |         ctx.prefix = invoked_prefix | ||||||
|         ctx.command = self.commands.get(invoker) |         ctx.command = self.all_commands.get(invoker) | ||||||
|         return ctx |         return ctx | ||||||
|  |  | ||||||
|     @asyncio.coroutine |     @asyncio.coroutine | ||||||
|   | |||||||
| @@ -589,16 +589,21 @@ class GroupMixin: | |||||||
|  |  | ||||||
|     Attributes |     Attributes | ||||||
|     ----------- |     ----------- | ||||||
|     commands : dict |     all_commands: dict | ||||||
|         A mapping of command name to :class:`Command` or superclass |         A mapping of command name to :class:`Command` or superclass | ||||||
|         objects. |         objects. | ||||||
|     """ |     """ | ||||||
|     def __init__(self, **kwargs): |     def __init__(self, **kwargs): | ||||||
|         self.commands = {} |         self.all_commands = {} | ||||||
|         super().__init__(**kwargs) |         super().__init__(**kwargs) | ||||||
|  |  | ||||||
|  |     @property | ||||||
|  |     def commands(self): | ||||||
|  |         """Set[:class:`Command`]: A unique set of commands without aliases that are registered.""" | ||||||
|  |         return set(self.all_commands.values()) | ||||||
|  |  | ||||||
|     def recursively_remove_all_commands(self): |     def recursively_remove_all_commands(self): | ||||||
|         for command in self.commands.copy().values(): |         for command in self.all_commands.copy().values(): | ||||||
|             if isinstance(command, GroupMixin): |             if isinstance(command, GroupMixin): | ||||||
|                 command.recursively_remove_all_commands() |                 command.recursively_remove_all_commands() | ||||||
|             self.remove_command(command.name) |             self.remove_command(command.name) | ||||||
| @@ -629,14 +634,14 @@ class GroupMixin: | |||||||
|         if isinstance(self, Command): |         if isinstance(self, Command): | ||||||
|             command.parent = self |             command.parent = self | ||||||
|  |  | ||||||
|         if command.name in self.commands: |         if command.name in self.all_commands: | ||||||
|             raise discord.ClientException('Command {0.name} is already registered.'.format(command)) |             raise discord.ClientException('Command {0.name} is already registered.'.format(command)) | ||||||
|  |  | ||||||
|         self.commands[command.name] = command |         self.all_commands[command.name] = command | ||||||
|         for alias in command.aliases: |         for alias in command.aliases: | ||||||
|             if alias in self.commands: |             if alias in self.all_commands: | ||||||
|                 raise discord.ClientException('The alias {} is already an existing command or alias.'.format(alias)) |                 raise discord.ClientException('The alias {} is already an existing command or alias.'.format(alias)) | ||||||
|             self.commands[alias] = command |             self.all_commands[alias] = command | ||||||
|  |  | ||||||
|     def remove_command(self, name): |     def remove_command(self, name): | ||||||
|         """Remove a :class:`Command` or subclasses from the internal list |         """Remove a :class:`Command` or subclasses from the internal list | ||||||
| @@ -655,7 +660,7 @@ class GroupMixin: | |||||||
|             The command that was removed. If the name is not valid then |             The command that was removed. If the name is not valid then | ||||||
|             `None` is returned instead. |             `None` is returned instead. | ||||||
|         """ |         """ | ||||||
|         command = self.commands.pop(name, None) |         command = self.all_commands.pop(name, None) | ||||||
|  |  | ||||||
|         # does not exist |         # does not exist | ||||||
|         if command is None: |         if command is None: | ||||||
| @@ -667,12 +672,12 @@ class GroupMixin: | |||||||
|  |  | ||||||
|         # we're not removing the alias so let's delete the rest of them. |         # we're not removing the alias so let's delete the rest of them. | ||||||
|         for alias in command.aliases: |         for alias in command.aliases: | ||||||
|             self.commands.pop(alias, None) |             self.all_commands.pop(alias, None) | ||||||
|         return command |         return command | ||||||
|  |  | ||||||
|     def walk_commands(self): |     def walk_commands(self): | ||||||
|         """An iterator that recursively walks through all commands and subcommands.""" |         """An iterator that recursively walks through all commands and subcommands.""" | ||||||
|         for command in tuple(self.commands.values()): |         for command in tuple(self.all_commands.values()): | ||||||
|             yield command |             yield command | ||||||
|             if isinstance(command, GroupMixin): |             if isinstance(command, GroupMixin): | ||||||
|                 yield from command.walk_commands() |                 yield from command.walk_commands() | ||||||
| @@ -699,13 +704,13 @@ class GroupMixin: | |||||||
|         """ |         """ | ||||||
|  |  | ||||||
|         names = name.split() |         names = name.split() | ||||||
|         obj = self.commands.get(names[0]) |         obj = self.all_commands.get(names[0]) | ||||||
|         if not isinstance(obj, GroupMixin): |         if not isinstance(obj, GroupMixin): | ||||||
|             return obj |             return obj | ||||||
|  |  | ||||||
|         for name in names[1:]: |         for name in names[1:]: | ||||||
|             try: |             try: | ||||||
|                 obj = obj.commands[name] |                 obj = obj.all_commands[name] | ||||||
|             except (AttributeError, KeyError): |             except (AttributeError, KeyError): | ||||||
|                 return None |                 return None | ||||||
|  |  | ||||||
| @@ -769,7 +774,7 @@ class Group(GroupMixin, Command): | |||||||
|  |  | ||||||
|         if trigger: |         if trigger: | ||||||
|             ctx.subcommand_passed = trigger |             ctx.subcommand_passed = trigger | ||||||
|             ctx.invoked_subcommand = self.commands.get(trigger, None) |             ctx.invoked_subcommand = self.all_commands.get(trigger, None) | ||||||
|  |  | ||||||
|         if early_invoke: |         if early_invoke: | ||||||
|             injected = hooked_wrapped_callback(self, ctx, self.callback) |             injected = hooked_wrapped_callback(self, ctx, self.callback) | ||||||
|   | |||||||
| @@ -171,7 +171,7 @@ class HelpFormatter: | |||||||
|         """int : Returns the largest name length of a command or if it has subcommands |         """int : Returns the largest name length of a command or if it has subcommands | ||||||
|         the largest subcommand name.""" |         the largest subcommand name.""" | ||||||
|         try: |         try: | ||||||
|             commands = self.command.commands if not self.is_cog() else self.context.bot.commands |             commands = self.command.all_commands if not self.is_cog() else self.context.bot.all_commands | ||||||
|             if commands: |             if commands: | ||||||
|                 return max(map(lambda c: len(c.name) if self.show_hidden or not c.hidden else 0, commands.values())) |                 return max(map(lambda c: len(c.name) if self.show_hidden or not c.hidden else 0, commands.values())) | ||||||
|             return 0 |             return 0 | ||||||
| @@ -265,7 +265,7 @@ class HelpFormatter: | |||||||
|             except CommandError: |             except CommandError: | ||||||
|                 return False |                 return False | ||||||
|  |  | ||||||
|         iterator = self.command.commands.items() if not self.is_cog() else self.context.bot.commands.items() |         iterator = self.command.all_commands.items() if not self.is_cog() else self.context.bot.all_commands.items() | ||||||
|         if self.show_check_failure: |         if self.show_check_failure: | ||||||
|             return filter(sane_no_suspension_point_predicate, iterator) |             return filter(sane_no_suspension_point_predicate, iterator) | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user