Novus/discord.py修改频道/类别权限报Missing Permissions错误解决
Discord机器人批量修改频道权限报403权限缺失问题
我尝试通过如下代码批量修改多个类别和频道的权限:
role = get(guild.roles, name="Fun") for channel in guild.channels: overwrites = channel.overwrites_for(role) overwrites.view_channel = False await channel.set_permissions(role, overwrite=overwrites)
运行后返回如下报错:
await channel.set_permissions(role, overwrite=overwrites) discord.errors.Forbidden: 403 Forbidden (error code: 50013): Missing Permissions
为机器人授予administrator权限时代码可正常运行,但授予除administrator外的所有权限、将机器人角色置于角色列表顶端、为机器人配置所有类别权限的场景下均会报错,使用的是discord.py的分支版本Novus,二者功能基本一致。
补充说明
- 我已在discord.py、Novus、Discord开发者官方服务器咨询该问题,均未获得有效解决方案,Discord开发者官方服务器未对我的问题作出回复。
- 我手动将机器人角色添加到对应类别并开启view_channel权限后功能可正常运行,但该方案需要服务器所有者为每个类别和频道手动配置,操作非常不便。
问题根因与解决方案
根因为类别/频道被设置为私有,因此即便全局权限配置正确也无法完成修改。
解决方案如下:
- 告知用户对应的私有频道/类别,手动添加具备对应权限的角色
- 新增提示告知用户可为机器人授予administrator权限即可自动完成操作
该方案可覆盖同类问题场景,可供后续遇到相同问题的开发者参考。
内容的提问来源于stack exchange,提问作者MrMetacom
相关产品推荐
相关产品推荐

