将不和谐的用户名转换为成员对象

时间:2020-02-18 16:37:29

标签: python discord.py mysql-connector-python

我有以下脚本

async def kick(ctx, u: discord.User):
    await client.kick(u)

它确实有pass_context=True,但这在主要功能中。

此脚本有效,但是问题在于它传递了一个带有作者ID(例如:johnwayne#345)的字符串,该字符串是在kick命令需要成员对象时从数据库中提取的。

如何使用它来查找成员对象?

1 个答案:

答案 0 :(得分:1)

您确定u只是一个字符串吗?我刚刚检查了一下,对我来说它正在传递一个User对象。

但是,我认为问题出在哪里,是您没有正确调用kick。您要致电Guild.kick或Member.kick。我假设client是您的实际botclient,并且没有kick命令。

编辑:

因此,假设kick命令在每次调用时都以字符串形式接收成员的ID,则可以使用以下命令。实际上,您不必传递u: discord.User,因为它仅传递字符串。

@client.command()   
async def kick(ctx, id):
    await ctx.guild.kick(ctx.guild.get_member(int(id)))

由于您在问题中提到您将其ID保存在数据库中,然后给出了其名称的示例,因此如果您要保存其名称而不是实际的User.id,我将包括以下内容。

@botclient.command()   
async def kick(ctx, name):
    await ctx.guild.kick(ctx.guild.get_member_named(name))