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

Convert discord username to member object

我有以下脚本,

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

它确实有 pass_context=True 但这是主要功能。

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

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

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

但是,我认为问题出在您没有正确调用 kick。你想打电话给 Guild.kick 或 Member.kick。我假设 client 是您实际的 botclient,并且没有踢命令。

编辑:

所以假设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))