3 回答

TA貢獻1846條經驗 獲得超7個贊
如果您仍然需要它,或者其他人正在尋找它。
用于discord.utils.find查找最近的成員對象。這是一個成員轉換器的示例:
class Member(commands.Converter):
async def convert(self, ctx, argument):
try:
member_converter = commands.MemberConverter()
member = await member_converter.convert(ctx, argument)
except commands.MemberNotFound:
member = discord.utils.find(
lambda m: m.name.lower().startswith(argument),
ctx.guild.members
)
if member is None:
raise commands.MemberNotFound(argument)
return member

TA貢獻1757條經驗 獲得超8個贊
我不知道你為什么需要這個,但你可以得到這樣的名字,然后你就可以隨心所欲地命名。我做了更多檢查,看看該成員在公會中是否有昵稱。
請記住,這是給作者的,您可以將其更改為您想要的任何內容。
import difflib
@bot.command()
async def nearest(ctx):
all_names = []
for member in ctx.guild.members:
if ctx.author == member:
continue # skip the author
if member.nick:
all_names.append(member.nick)
else:
all_names.append(member.name)
if ctx.author.nick:
close_names = difflib.get_close_matches(ctx.author.nick, all_names)
else:
close_names = difflib.get_close_matches(ctx.author.name, all_names)
if close_names:
await ctx.send(" - ".join(close_names))
else:
await ctx.send("You are unique")
您可以使用它來獲取 dm 的用戶。
user = bot.get_member_named('Name here')
user.send("Found your brother")

TA貢獻1847條經驗 獲得超11個贊
您不再需要創建 dm 頻道。只需使用一個await member.send("Whatever msg")
PS: 最接近的匹配用戶名是什么意思?您必須提供更多詳細信息,因為我認為這沒有意義。Discord已經自動為你 做到了 這一點。只需在您想要在不和諧中提及的用戶上按 Enter 鍵即可。他們會自動向您顯示建議。我很確定您別無選擇,只能提及一名成員才能使該命令發揮作用。
添加回答
舉報