Discord bot kick 功能问题

时间:2021-05-19 16:32:36

标签: python discord discord.py

我正在制作一个不和谐功能,我希望实现的功能之一是踢,当您不是管理员或您试图踢管理员时,它会做出响应,我编写的代码适用于踢人,但它当我尝试输入回复时完全停止工作。

这是目前的代码-

@bot.command(name='kick')
async def kick(ctx, user: discord.Member, *, reason="No reason provided"):
    if user.guild_permissions.administrator:
        await ctx.send(f'{user.mention} is an admin')
    else:
        await user.kick(reason=reason)
        kick = discord.Embed(title=f"Kicked {user.name}!", description=f"Reason: {reason}\nBy: {ctx.author.mention}")
        await ctx.channel.send(embed=kick)
        await user.send(embed=kick)

1 个答案:

答案 0 :(得分:0)

您的 if else 语句与问题不匹配,要踢人,它应该具有管理员权限,如果它具有管理员权限,但根据您的代码没有踢原因,只有没有管理员权限的人才能踢用户。 .

正确的代码应该是

@bot.command(name='kick')
async def kick(ctx, user: discord.Member, *, reason="No reason provided"):
    if user.guild_permissions.administrator:
        await user.kick(reason=reason)
        kick = discord.Embed(title=f"Kicked {user.name}!", description=f"Reason: {reason}\nBy: {ctx.author.mention}")
        await ctx.channel.send(embed=kick)
        await user.send(embed=kick)
    else:
        await ctx.send(f'{user.mention} is not an admin')