首页 > 解决方案 > Discord bot踢功能问题

问题描述

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

这是到目前为止的代码-

@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)

标签: pythondiscorddiscord.py

解决方案


您的 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')

推荐阅读