diff --git a/discord/ext/commands/converter.py b/discord/ext/commands/converter.py index 4cd8a3533..30cea2a5c 100644 --- a/discord/ext/commands/converter.py +++ b/discord/ext/commands/converter.py @@ -207,6 +207,11 @@ class MemberConverter(IDConverter[discord.Member]): async def query_member_named(self, guild: discord.Guild, argument: str) -> Optional[discord.Member]: cache = guild._state.member_cache_flags.joined username, _, discriminator = argument.rpartition('#') + + # If # isn't found then "discriminator" actually has the username + if not username: + discriminator, username = username, discriminator + if discriminator == '0' or (len(discriminator) == 4 and discriminator.isdigit()): lookup = username predicate = lambda m: m.name == username and m.discriminator == discriminator @@ -316,6 +321,11 @@ class UserConverter(IDConverter[discord.User]): return result # type: ignore username, _, discriminator = argument.rpartition('#') + + # If # isn't found then "discriminator" actually has the username + if not username: + discriminator, username = username, discriminator + if discriminator == '0' or (len(discriminator) == 4 and discriminator.isdigit()): predicate = lambda u: u.name == username and u.discriminator == discriminator else: diff --git a/discord/guild.py b/discord/guild.py index a37fb549f..f7d1a5566 100644 --- a/discord/guild.py +++ b/discord/guild.py @@ -1104,6 +1104,11 @@ class Guild(Hashable): members = self.members username, _, discriminator = name.rpartition('#') + + # If # isn't found then "discriminator" actually has the username + if not username: + discriminator, username = username, discriminator + if discriminator == '0' or (len(discriminator) == 4 and discriminator.isdigit()): return utils.find(lambda m: m.name == username and m.discriminator == discriminator, members)