发送机器人也可以访问的频道

时间:2021-02-24 15:45:39

标签: python discord discord.py

我希望我的不和谐机器人返回它在某个公会中可以访问的频道,我正在使用:

for i in guild.categories:
      channel_list = []
      for j in i.channels:
        channel_list.append(f"- {j.name}, {j.id}")

但这会返回公会的所有频道。如何检查机器人是否有权读取频道,以便我只能看到机器人被允许查看的频道?

1 个答案:

答案 0 :(得分:2)

我认为您正在寻找 bot.get_all_channels(),如文档中所写:“一个生成器可以检索客户端可以'访问'的每个 abc.GuildChannel。”,因此您无需验证机器人可以'看频道。请注意,您也可能会通过此功能检索语音频道

否则,您仍然可以遍历类别中的所有频道,并使用 channel.permissions_for(guild.me).view_channel ( https://discordpy.readthedocs.io/en/latest/api.html?highlight=me#discord.Guild.me, https://discordpy.readthedocs.io/en/latest/api.html#discord.Permissions.view_channel ) 如果机器人可以看到频道,则返回 True,否则返回 False

您的代码将是:

for i in guild.categories:
      channel_list = []
      for j in i.channels:
        if j.permissions_for(guild.me).view_channel:
            channel_list.append(f"- {j.name}, {j.id}")