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

时间:2018-03-31 09:36:02

标签: python discord.py channels

这里有一些考试代码:

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

感谢您的回答。

1 个答案:

答案 0 :(得分:0)

如果您想检查频道是否为文字频道,请使用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将检查频道是否为文字频道,以便您发送信息。