如何使用discord.py获取所有文本频道?

时间:2018-03-23 09:57:11

标签: channel discord discord.py

我需要让所有通道制作一个Bunker命令,这使得所有通道都是只读的。

2 个答案:

答案 0 :(得分:7)

他们在 discord.py (1.0)的newer version中将Client.servers更改为Client.guilds
您也可以使用 bot 代替 Client info)。
然后guild.text_channels获取所有文本通道。
对于所有频道,您都可以使用bot.get_all_channels()

text_channel_list = []
for guild in bot.guilds:
    for channel in guild.text_channels:
        text_channel_list.append(channel)

答案 1 :(得分:3)

假设您使用的是异步分支,Client类包含servers,它返回机器人连接的Server类列表。这里的文档:http://discordpy.readthedocs.io/en/latest/api.html#discord.Client.servers

迭代此列表,每个Server类包含channels,它返回服务器具有的Channel类列表。这里的文档:http://discordpy.readthedocs.io/en/latest/api.html#discord.Server.channels

最后,迭代此列表,您可以检查每个Channel类的不同属性。例如,如果要检查频道是否为文本,则可以使用channel.type。这里的文档:http://discordpy.readthedocs.io/en/latest/api.html#discord.Channel

一个粗略的示例,说明如何列出所有Channel个对象的类型'文字':

text_channel_list = []
for server in Client.servers:
    for channel in server.channels:
        if channel.type == 'Text':
            text_channel_list.append(channel)