首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何给予自己的bot权限来查看类别?

如何给予自己的bot权限来查看类别?
EN

Stack Overflow用户
提问于 2021-04-28 09:35:18
回答 1查看 282关注 0票数 0

我的机器人有一个命令,它创建一个类别,在它里面,一个文本和声音通道。在创建类别时,我会覆盖只允许某个角色查看该类别及其通道的权限。

一切都好直到一切顺利。当我希望我的机器人看到文本通道时,我的问题就来了,这样他就可以阅读并与消息交互。除了不和谐的App之外,我的机器人没有任何额外的角色。

到目前为止,这是我尝试过的解决方案:

  • 将Bot设置为Administrator:这个解决方案可以工作,但是想要解决它,因为我不知道是否建议将您的bot设置为管理员,并且我认为应该有其他方法来解决这个问题。
  • 将权限添加到类别中,设置“我的机器人”角色,让他读取和写入消息,如下所示:
代码语言:javascript
复制
await category.set_permissions(bot_role, read_messages=True, send_messages=True, connect=True)

这会引发一个discord.errors.Forbidden: 403 Forbidden (error code: 50001): Missing Access错误,因为我在oauth页面中设置了所有权限(见下面的照片),所以我不理解这个错误。我还尝试给文本通道赋予相同的权限,但是它会引发相同的错误。

我真正想要的是我的机器人在那个文本通道中读取消息,因为如果机器人看不到通道,他不会响应任何命令。

编辑:我就是这样创建类别和频道的:

代码语言:javascript
复制
async def prepare_game(ctx):
    guild = ctx.guild
    role = await guild.create_role(name=role_name)
    category = await guild.create_category('Game')
    await category.set_permissions(role, read_messages=True, send_messages=True, connect=True, speak=True)
    text_channel = await guild.create_text_channel('Board', category=category, sync_permissions=True)
    voice_channel = await guild.create_voice_channel('Room', category=category, sync_permissions=True)

最后,我添加了await category.set_permissions(bot_role, read_messages=True, send_messages=True, connect=True)行,bot_role是我的应用程序机器人角色

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-28 12:52:18

尝试为ctx.guild.me设置权限覆盖( bot用户本身)。

文档中,set_permissions将接受一个角色或一个成员。

例如:

代码语言:javascript
复制
async def prepare_game(ctx):
    guild = ctx.guild
    role = await guild.create_role(name=role_name)
    category = await guild.create_category('Game')
    await category.set_permissions(role, read_messages=True, send_messages=True, connect=True, speak=True)
    await category.set_permissions(ctx.guild.me, read_messages=True, send_messages=True, speak=True)
    text_channel = await guild.create_text_channel('Board', category=category, sync_permissions=True)
    voice_channel = await guild.create_voice_channel('Room', category=category, sync_permissions=True)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67297594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档