如何从 Discord.py 的频道列表中删除文本频道

How to get rid of Text Channels from channel list in Discord.py

这里有一些示例代码:

for server in client.servers:
        for channel in server.channels:
            print(channel)

输出例如:

Text Channels
general
commands
Text Channels
main-channel
admin-channel
Text Channels
first-channel

我想制作命令 !br 将消息发送到每个服务器中的第一个频道。但我不能,因为文本通道行也算作通道

Here's little image what I mean by Text Channels

而且我总是收到这样的错误:

Cannot send messages in a non-text channel

所以我想在这些频道出现时跳过它们,或者将它们从频道列表中完全删除。

这里是命令的完整代码:

elif message.content.startswith('!br'):
    for server in client.servers:
        for channel in server.channels:
            if channel.permissions_for(server.me).send_messages:
                await client.send_message(channel, str(message.content[4:] )
                break

感谢您的回答。

如果要检查频道是否为文本频道,可以使用 channel.type。文档 here。 您只需要检查频道类型应为 text.

elif message.content.startswith('!br'):
    for server in client.servers:
        for channel in server.channels:
            if (channel.permissions_for(server.me).send_messages) and (channel.type == "text"):
                await client.send_message(channel, str(message.content[4:] )
                break

channel.type == discord.ChannelType.text 将检查频道是否为文本频道,以便您可以发送消息。