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

discord.py开发机器人报command has no attribute has_permisions错误如何解决

错误原因

该报错通常由以下几种情况引发:

  1. 装饰器拼写错误:错误提示中的has_permisions拼写少了一个s,若代码中拼写有误就会触发属性不存在的报错
  2. discord.py库版本异常:replit平台默认安装的库可能存在版本过低、安装了非官方分支的问题,旧版本不存在对应装饰器属性
  3. 变量覆盖问题:其他代码中如果定义了名为commands的变量/函数,会覆盖导入的discord.ext.commands模块,导致找不到对应属性
  4. 冗余参数冲突:@bot.command()中配置的pass_context=True是discord.py 1.0版本之前的旧参数,新版本中该参数已经废弃,可能引发异常
解决方案
  • 检查装饰器拼写,确保写为@commands.has_permissions(administrator=True),注意permissions有两个s
  • 升级discord.py到官方最新稳定版,在replit的shell终端执行命令:
pip install --upgrade discord.py
  • 移除@bot.command()中的pass_context=True参数,新版本默认自动传递上下文,不需要额外配置
  • 检查所有代码中是否有命名为commands的自定义变量、函数,修改重名的自定义命名即可
  • 修复purge命令的逻辑错误,避免purge删除触发消息后,后续ctx.message.delete()找不到消息对象引发二次报错,修正后的代码参考:
#Purge command    
@bot.command()
@commands.has_permissions(administrator=True)
async def purge(ctx, limit: int):
        # 先删除触发命令的消息
        await ctx.message.delete()
        # 清理指定数量的消息
        await ctx.channel.purge(limit=limit)
        # 发送提示3秒后自动删除提示
        notice = await ctx.send("Messages purged 👌")
        await asyncio.sleep(3)
        await notice.delete()

内容的提问来源于stack exchange,提问作者evo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:06:03