将不和谐用户名转换为成员对象
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))
我有以下脚本,
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))