[commands] Add StoreChannelConverter
This commit is contained in:
		| @@ -51,6 +51,7 @@ __all__ = ( | ||||
|     'PartialEmojiConverter', | ||||
|     'CategoryChannelConverter', | ||||
|     'IDConverter', | ||||
|     'StoreChannelConverter', | ||||
|     'clean_content', | ||||
|     'Greedy', | ||||
| ) | ||||
| @@ -478,6 +479,45 @@ class CategoryChannelConverter(IDConverter): | ||||
|             raise ChannelNotFound(argument) | ||||
|  | ||||
|         return result | ||||
|      | ||||
| class StoreChannelConverter(IDConverter): | ||||
|     """Converts to a :class:`~discord.StoreChannel`. | ||||
|  | ||||
|     All lookups are via the local guild. If in a DM context, then the lookup | ||||
|     is done by the global cache. | ||||
|  | ||||
|     The lookup strategy is as follows (in order): | ||||
|  | ||||
|     1. Lookup by ID. | ||||
|     2. Lookup by mention. | ||||
|     3. Lookup by name | ||||
|     """ | ||||
|      | ||||
|     async def convert(self, ctx, argument): | ||||
|         bot = ctx.bot | ||||
|         match = self._get_id_match(argument) or re.match(r'<#([0-9]+)>$', argument) | ||||
|         result = None | ||||
|         guild = ctx.guild | ||||
|          | ||||
|         if match is None: | ||||
|             # not a mention | ||||
|             if guild: | ||||
|                 result = discord.utils.get(guild.channels, name=argument) | ||||
|             else: | ||||
|                 def check(c): | ||||
|                     return isinstance(c, discord.StoreChannel) and c.name == argument | ||||
|                 result = discord.utils.find(check, bot.get_all_channels()) | ||||
|         else: | ||||
|             channel_id = int(match.group(1)) | ||||
|             if guild: | ||||
|                 result = guild.get_channel(channel_id) | ||||
|             else: | ||||
|                 result = _get_from_guilds(bot, 'get_channel', channel_id) | ||||
|  | ||||
|         if not isinstance(result, discord.StoreChannel): | ||||
|             raise ChannelNotFound(argument) | ||||
|  | ||||
|         return result | ||||
|  | ||||
| class ColourConverter(Converter): | ||||
|     """Converts to a :class:`~discord.Colour`. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user