我有以下脚本
async def kick(ctx, u: discord.User):
await client.kick(u)
它确实有pass_context=True
,但这在主要功能中。
此脚本有效,但是问题在于它传递了一个带有作者ID(例如:johnwayne#345
)的字符串,该字符串是在kick命令需要成员对象时从数据库中提取的。
如何使用它来查找成员对象?
答案 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))