[commands] Add StoreChannelConverter
This commit is contained in:
parent
1b2688518e
commit
36318bd45c
@ -51,6 +51,7 @@ __all__ = (
|
|||||||
'PartialEmojiConverter',
|
'PartialEmojiConverter',
|
||||||
'CategoryChannelConverter',
|
'CategoryChannelConverter',
|
||||||
'IDConverter',
|
'IDConverter',
|
||||||
|
'StoreChannelConverter',
|
||||||
'clean_content',
|
'clean_content',
|
||||||
'Greedy',
|
'Greedy',
|
||||||
)
|
)
|
||||||
@ -478,6 +479,45 @@ class CategoryChannelConverter(IDConverter):
|
|||||||
raise ChannelNotFound(argument)
|
raise ChannelNotFound(argument)
|
||||||
|
|
||||||
return result
|
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):
|
class ColourConverter(Converter):
|
||||||
"""Converts to a :class:`~discord.Colour`.
|
"""Converts to a :class:`~discord.Colour`.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user