Skip to content

Commit a405ce5

Browse files
authored
fix member not being converted
Signed-off-by: Lumouille <[email protected]>
1 parent 850dde9 commit a405ce5

File tree

1 file changed

+22
-24
lines changed

1 file changed

+22
-24
lines changed

discord/ext/bridge/core.py

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
SlashCommand,
3939
SlashCommandGroup,
4040
SlashCommandOptionType,
41-
Member
4241
)
4342

4443
from ...utils import MISSING, find, get, warn_deprecated
@@ -54,7 +53,7 @@
5453
GuildChannelConverter,
5554
RoleConverter,
5655
UserConverter,
57-
MemberConverter
56+
MemberConverter,
5857
)
5958
from ..commands.converter import _convert_to_bool, run_converters
6059

@@ -582,15 +581,22 @@ def predicate(func: Callable | ApplicationCommand):
582581

583582

584583
class MentionableConverter(Converter):
585-
"""A converter that can convert a mention to a user or a role."""
584+
"""A converter that can convert a mention to a member or a role, preferring Member in guilds."""
586585

587586
async def convert(self, ctx, argument):
588587
try:
589588
return await RoleConverter().convert(ctx, argument)
590589
except BadArgument:
591-
return await UserConverter().convert(ctx, argument)
590+
pass
592591

592+
if ctx.guild:
593+
try:
594+
return await MemberConverter().convert(ctx, argument)
595+
except BadArgument:
596+
pass
593597

598+
return await UserConverter().convert(ctx, argument)
599+
594600
class AttachmentConverter(Converter):
595601
async def convert(self, ctx: Context, arg: str):
596602
try:
@@ -616,6 +622,7 @@ async def convert(self, ctx, arg: bool):
616622
SlashCommandOptionType.mentionable: MentionableConverter,
617623
SlashCommandOptionType.number: float,
618624
SlashCommandOptionType.attachment: AttachmentConverter,
625+
discord.Member: MemberConverter
619626
}
620627

621628

@@ -624,39 +631,30 @@ class BridgeOption(Option, Converter):
624631
command option and a prefixed command argument for bridge commands.
625632
"""
626633

627-
def __init__(self, input_type, *args, **kwargs):
628-
super().__init__(input_type, *args, **kwargs)
629634

635+
def __init__(self, input_type, *args, **kwargs):
630636
self.converter = kwargs.pop("converter", None)
637+
super().__init__(input_type, *args, **kwargs)
631638

632639
if self.converter is None:
633-
converter = BRIDGE_CONVERTER_MAPPING.get(input_type)
634-
if input_type in (Member, SlashCommandOptionType.user):
635-
self.converter = self._guild_aware_user_converter
636-
637-
elif isinstance(converter, type) and issubclass(converter, Converter):
638-
self.converter = converter()
640+
if input_type == discord.Member:
641+
self.converter = MemberConverter()
639642
else:
640-
self.converter = converter
643+
self.converter = BRIDGE_CONVERTER_MAPPING.get(input_type)
641644

642-
async def _guild_aware_user_converter(self, ctx, argument):
643-
if ctx.guild:
644-
try:
645-
return await MemberConverter().convert(ctx, argument)
646-
except BadArgument:
647-
pass
648-
return await UserConverter().convert(ctx, argument)
649-
650645
async def convert(self, ctx, argument: str) -> Any:
651646
try:
652647
if self.converter is not None:
653648
converted = await self.converter.convert(ctx, argument)
654649
else:
655-
converter = BRIDGE_CONVERTER_MAPPING[self.input_type]
656-
if issubclass(converter, Converter):
650+
converter = BRIDGE_CONVERTER_MAPPING.get(self.input_type)
651+
if isinstance(converter, type) and issubclass(converter, Converter):
657652
converted = await converter().convert(ctx, argument) # type: ignore # protocol class
658-
else:
653+
elif callable(converter):
659654
converted = converter(argument)
655+
else:
656+
raise TypeError(f"Invalid converter: {converter}")
657+
660658

661659
if self.choices:
662660
choices_names: list[str | int | float] = [

0 commit comments

Comments
 (0)