Discord bot验证码系统主账号正常 小号测试报MissingPermissions错误
Discord bot命令触发MissingPermissions报错解决方案
核心原因
你代码中使用的@commands.has_permissions(manage_messages=True)装饰器作用是校验触发命令的用户是否在当前频道拥有「管理消息」权限,哪怕你给小号授予了服务器级管理员权限,依然触发报错的常见排查方案如下:
- 检查命令触发频道的独立权限配置:服务器级别的权限会被频道级的单独配置覆盖,打开对应频道的权限设置,确认小号的「管理消息」权限没有被设为拒绝。
- 检查角色优先级排序:Discord中高排序角色的权限会覆盖低排序角色的配置,如果小号所属的管理员角色排序低于其他关闭了「管理消息」权限的角色,权限会被覆盖,把小号的管理员角色拖动到角色列表更高位置即可。
- 检查频道所属分类的权限配置:如果频道开启了分类权限同步,需要确认分类权限没有禁止小号的「管理消息」权限。
- 如果你的业务逻辑不需要限制调用命令的用户权限,只需要Bot本身有权限即可运行,直接删除
@commands.has_permissions(manage_messages=True)这行装饰器代码即可;如果你本来是想校验Bot自身是否有对应权限而非用户权限,把装饰器替换为@commands.bot_has_permissions(manage_messages=True)即可。修改后需确认两点:Bot自身的角色拥有管理消息、分配角色的权限;Bot的角色排序高于你要分配的user角色的排序,避免后续出现Bot无法给用户分配角色的问题。
内容的提问来源于stack exchange,提问作者hayitslazer
相关产品推荐
相关产品推荐

