Как избавиться от текстовых каналов из списка каналов в 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, которая будет отправлять сообщение на 1-й канал на каждом сервере. Но я не могу, потому что строка 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

Спасибо за ответ.


person Kewbin    schedule 31.03.2018    source источник


Ответы (1)


Если вы хотите проверить, является ли канал текстовым, используйте channel.type. Документация здесь. Вам просто нужно убедиться, что канал должен иметь тип 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 проверит, является ли канал текстовым, чтобы вы могли отправить сообщение.

person toheedNiaz    schedule 31.03.2018
comment
Появляется это сообщение об ошибке: AttributeError: объект 'Channel' не имеет атрибута 'replace' - person Kewbin; 31.03.2018
comment
вы можете проверить сейчас? я обновил ответ - person toheedNiaz; 31.03.2018
comment
все еще то же сообщение об ошибке: невозможно отправлять сообщения в нетекстовом канале - person Kewbin; 31.03.2018
comment
вы можете отправлять сообщения только по текстовому каналу, поэтому вам нужно проверить channel.type == discord.ChannelType.text. это исправление, которое я считаю - person toheedNiaz; 31.03.2018