3 回答
![?](http://img1.sycdn.imooc.com/5458477300014deb02200220-100-100.jpg)
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
![?](http://img1.sycdn.imooc.com/545863c10001865402200220-100-100.jpg)
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")
![?](http://img1.sycdn.imooc.com/545866130001bfcb02200220-100-100.jpg)
TA贡献1847条经验 获得超11个赞
您不再需要创建 dm 频道。只需使用一个await member.send("Whatever msg")
PS: 最接近的匹配用户名是什么意思?您必须提供更多详细信息,因为我认为这没有意义。Discord已经自动为你 做到了 这一点。只需在您想要在不和谐中提及的用户上按 Enter 键即可。他们会自动向您显示建议。我很确定您别无选择,只能提及一名成员才能使该命令发挥作用。
添加回答
举报