You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.py封禁、解封及踢出命令开发求助:踢出命令无报错但失效

Discord.py 封禁/解封/踢出命令修复方案

你的代码存在几个核心问题,导致命令无法触发:

  • @client.command 缺少括号,正确写法是 @client.command(),没有括号的话装饰器不会生效,命令无法被注册
  • 命令函数的第一个参数错误,应该是 ctx(上下文对象)而非 message,Discord.py 命令体系中,装饰器修饰的函数默认第一个参数为上下文,通过它可获取消息、频道等信息
  • 需确认机器人的命令前缀是否设置为 !,初始化 Bot 时要写 client = commands.Bot(command_prefix='!', intents=discord.Intents.all()),同时要在开发者门户开启服务器成员相关权限

修正后的完整命令代码

踢出(kick)命令

@client.command()
@commands.has_permissions(kick_members=True)
async def kick(ctx, member: discord.Member, reason=None):
    await member.kick(reason=reason)
    await ctx.send(f"{member} 已从服务器踢出。")

封禁(ban)命令

@client.command()
@commands.has_permissions(ban_members=True)
async def ban(ctx, member: discord.Member, reason=None):
    await member.ban(reason=reason)
    await ctx.send(f"{member} 已被封禁。")

解封(unban)命令

@client.command()
@commands.has_permissions(ban_members=True)
async def unban(ctx, user_id: int):
    user = await client.fetch_user(user_id)
    await ctx.guild.unban(user)
    await ctx.send(f"{user} 已被解封。")

额外注意事项

  • 必须在 Discord 开发者门户为机器人开启 服务器成员特权 和 消息内容特权 等必要权限,否则无法获取成员信息
  • 机器人自身的权限要高于被操作的成员,否则会执行失败
  • 解封命令使用用户ID是因为被封禁的成员不在服务器内,无法@提及

内容的提问来源于stack exchange,提问作者Yunus Emre KÖSE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 16:47:03