Discord python 机器人无法启动

Discord python bot can't kick

所以这是一个我试过使用的踢会员的代码,但它不起作用,这里出了什么问题?

@client.command(pass_context = True)
@commands.has_permissions(kick_members = True)
async def kick(ctx, member = discord.Member, *, reason = None):
    await member.kick(reason = reason)
    await ctx.message.add_reaction("✅")
    await ctx.send("{} was kicked for the reason: {} by {}".format(member,reason,ctx.author.name))
    await member.send()

@kick.error
async def kick_error(ctx, error):
    if isinstance(error, MissingPermissions):
        x = ""
        for i in MissingPermissions:
            x = x + i + "\n"
        await ctx.send("You don't have the following permissions: {}".format(x))
  1. 您不必再使用 pass_context = True 只需留空 () (changelog in documentation)。
  2. member = discord.Member替换为member : discord.Member
  3. 删除 await member.send() - 无论如何您都不会使用它。

更正代码

@client.command()
@commands.has_permissions(kick_members = True)
async def kick(ctx, member : discord.Member, *, reason = None):
    await member.kick(reason = reason)
    await ctx.message.add_reaction("✅")
    await ctx.send(f"{member.mention} was kicked for the reason: {reason} by {ctx.author.name.mention}")

@kick.error
async def kick_error(ctx, error):
    if isinstance(error, discord.ext.commands.errors.MissingPermissions):
        x = ""
        for i in discord.ext.commands.errors.MissingPermissions:
            x = x + i + "\n"
        await ctx.send(f"You don't have the following permissions: {x}")
    elif isinstance(error, discord.ext.commands.errors.MissingRequiredArgument):
        await ctx.send(str(error))

我更正了您的代码并添加了您可能想要 read about it. I also added .mention 的最新字符串格式化方法 (f"{something}"),其中提到了成员并添加了另一个检查 kick_error().