Как отправить сообщение в ОПРЕДЕЛЁННУЮ ТЕМУ в групповом чате Telegram с помощю библиотеки aiogram

Как отправить сообщение в определённую тему в групповом чате? Мне выдаёт ошибку при попытке отправить сообщение по ID чата. Мне выдаёт ошибку:

Task exception was never retrieved future: <Task finished name='Task-9' coro=<Dispatcher._process_polling_updates() done, defined at /home/devilnoone/.local/lib/python3.11/site-packages/aiogram/dispatcher/dispatcher.py:407> exception=BadRequest('Topic_closed')> Traceback (most recent call last): File "/home/devilnoone/.local/lib/python3.11/site-packages/aiogram/dispatcher/dispatcher.py", line 415, in _process_polling_updates for responses in itertools.chain.from_iterable(await self.process_updates(updates, fast)): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/devilnoone/.local/lib/python3.11/site-packages/aiogram/dispatcher/dispatcher.py", line 235, in process_updates return await asyncio.gather(*tasks) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/devilnoone/.local/lib/python3.11/site-packages/aiogram/dispatcher/handler.py", line 117, in notify response = await handler_obj.handler(*args, **partial_data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/devilnoone/.local/lib/python3.11/site-packages/aiogram/dispatcher/dispatcher.py", line 256, in process_update return await self.message_handlers.notify(update.message) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/devilnoone/.local/lib/python3.11/site-packages/aiogram/dispatcher/handler.py", line 117, in notify response = await handler_obj.handler(*args, **partial_data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/devilnoone/Документы/Python/TelegramPoputkaBot/handlers/other.py", line 31, in get_id mess = await bot.send_message(message.chat.id, "text") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/devilnoone/.local/lib/python3.11/site-packages/aiogram/bot/bot.py", line 346, in send_message result = await self.request(api.Methods.SEND_MESSAGE, payload) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/devilnoone/.local/lib/python3.11/site-packages/aiogram/bot/base.py", line 236, in request return await api.make_request(await self.get_session(), self.server, self.__token, method, data, files, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/devilnoone/.local/lib/python3.11/site-packages/aiogram/bot/api.py", line 140, in make_request return check_result(method, response.content_type, response.status, await response.text()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/devilnoone/.local/lib/python3.11/site-packages/aiogram/bot/api.py", line 115, in check_result exceptions.BadRequest.detect(description) File "/home/devilnoone/.local/lib/python3.11/site-packages/aiogram/utils/exceptions.py", line 141, in detect raise cls(description) aiogram.utils.exceptions.BadRequest: Topic_closed


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

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

Вероятно это будет полезно.
Когда ты создаешь тему, ты отправляешь сообщение "Тема "тема А" создана". И когда ты пишешь в эту тему, то ты постоянно отвечаешь на сообщение "Тема "тема А" создана".
То есть если ты отключишь опцию "Темы" в своем чате, то ты увидишь что когда ты писал в тему "тема А" то ты отвечал на сообщение о создании темы.
То есть чтобы бот писал в ту тему в которую ты хочешь, то просто получи Айди сообщения о создании темы. Либо отправь сообщение любое в эту тему и напечатай в откладке (консоли) message.message_thread.id.
Затем ты хочешь чтобы бот писал в эту тему, значит команда выглядит так:

bot.send_message(chat_id = -10012345689, text = "что-нибудь", reply_to_message_id = айдишник сообщения о создании темы (integer))

Надеюсь помогло. Просто знай что когда ты пишешь в тему, то ты отвечаешь на сообщение о создании темы.

введите сюда описание изображения
введите сюда описание изображения

→ Ссылка
Автор решения: Limon4egtop

Используйте параметр message_thread_id

bot.send_message(message.chat.id, "some text", message_thread_id=message.message_thread_id)
→ Ссылка
Автор решения: Виктор Веретнов

Я пишу ботов, обычно используя telethon, но, думаю, тебе это должно помочь. Aiogram и Telethon очень похожи по оберткам методов.

bot.send_message(channel_id=31231233123, 'Сообщение', reply_to=2)

Пояснение reply_to - это id топика.

Суть в том что каналы с топиками, это обстракция, и по факту все сообщения имеют сквозную нумерацию id. Просто у некоторых сообщений меняется объект, если сообщение становится топиком.

Список топиков в канале можно получить разными способами.

Самый простой способ - это вытащить из обращения к боту из конкретного топика.

Обычно это event.message.reply_to.reply_to_msg_id.

→ Ссылка
Автор решения: N P

ссылка на ветку форума

Если посмотреть ссылку на ветку форума, то там есть уникалный идентификатор ветки, который и надо внести в параметр reply_to_message_id метода send_message

→ Ссылка