Откуда сообщение пришло (вопрос по Discord.Py)

Всем привет! Вопрос такой по библиотеке Discord для Python. Как известно, если дискорд-бот подключен, то он имеет возможности отслеживать активность пользователей группы в Дискорд. В случае моего вопроса в ответ на то, что пользователь написал и отправил сообщение в Дискорде, вызывается функция on_message(message), в качестве аргумента имеет класс, содержащий всю информацию о сообщении (его текст, кем отправлено и т.д.). Так вот, вопрос в чём - Как я могу отследить из какого именно текстового канала было отправлено сообщение (именно Channel_id)? В атрибутах класса message такого нет (есть название канала, и мне, получается надо по названию найти ID, а если есть одинаковые названия.........). Просто не хочется, чтобы бот реагировал вообще на все сообщения, будучи "расквартированным" на канале. Ладно я, я могу сам залогинить его именно на нужный канал, но для вероятного пользователя хочется поменьше головной боли. И, кстати, может находил кто руководство к этой библиотеке на русском языке?


Ответы (1 шт):

Автор решения: jillstr

Если открыть документацию: тык

То в классе Message можно увидеть атрибут channel, который может быть одним из этих классов: TextChannel, Thread, DMChannel, GroupChannel.

У каждого из них есть атрибут id, поэтому можно спокойно сделать так:

import discord
from discord.ext import commands

bot = commands.Bot()

@bot.event
async def on_message(message: discord.Message):
    channel_id = message.channel.id

Если вам нужен конкретно класс TextChannel, то есть обычные текстовые каналы на сервере, можно сделать проверку:

import discord
from discord.ext import commands

bot = commands.Bot()

@bot.event
async def on_message(message: discord.Message):
    if isinstance(message.channel, discord.TextChannel):
        channel_id = message.channel.id
→ Ссылка