【发布时间】:2021-12-10 02:50:19
【问题描述】:
已解决 - 类别/频道已设置为私有,这就是即使拥有正确权限也无法更改它们的原因。我的解决方案是告诉用户哪些角色并手动添加具有权限的角色。我添加了一条消息,说他们可以只给机器人管理员权限,它会为他们做这件事。希望这对将来遇到此问题的任何人有所帮助。
我正在尝试使用以下代码更改多个类别和频道的权限:
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
如果我授予机器人管理员权限,它将起作用。但是,如果我给机器人所有其他权限,它将不起作用,机器人位于角色的顶部,并且它具有每个类别的权限。我错过了什么? 我正在使用 Novus(discord.py 的分支,所以它几乎是一回事)。
编辑:我问过 discord.py、Novus 和 discord 开发者 discord 服务器中的人,他们也帮不了我。除了不和谐的开发者服务器之外,他们只是没有回答我的问题。
编辑 2:当我手动将机器人的角色添加到类别并启用 view_channel 时,我能够让它工作。但是,这行不通,因为这意味着服务器所有者必须为每个类别和频道手动执行此操作,这真的很不方便。
【问题讨论】:
-
HTTP 错误是由 Discord API 直接引发的,这仅仅意味着您的机器人没有适当的权限来执行该操作。检查服务器、类别和频道关于您的机器人的权限。并且机器人的许可角色需要高于您尝试更改的角色。
-
@Taku 它只在我正在测试它的一台服务器上,并且它拥有所有类别的权限,并且它正在编辑的角色就像我在帖子中所说的那样处于机器人的角色
-
看起来你可能需要在每个(我的意思是每个频道)中管理频道和管理权限,因为同样的代码对我有用
-
@GamingwithAkashdeep 当我手动将机器人的角色添加到类别并启用 view_channel 时,我能够让它工作。但是,这行不通,因为这意味着服务器所有者必须为每个类别和频道手动执行此操作,这真的很不方便。
-
我注意到您添加了赏金,但我的原始评论仍然有效,没有人可以为您提供与此不同的适当解决方案。除非它是 API 的错误(极不可能),否则您的机器人缺少访问权限/没有足够的权限在一个(或多个)频道中编辑“有趣”角色。您的代码是正确的,并且是完成任务的正确方法。我可以建议您最好的方法是在
set_permissions()调用之前添加print(channel)以查看导致问题的通道,然后手动检查通道覆盖以确定您的机器人缺少哪些权限。
标签: python discord.py