Задать вопрос
@Drunkmare

Aiogram 3.x как получить текст сообщения по его id?

Как можно получить текст сообщения зная чат id и id сообщения в Aiogram 3.xx ?
есть функция bot.copy_message, но она требует обязательно на вход 3 аргумента:
chat_id - куда мы отсылаем скопированное сообщение
from_chat_id - откуда мы копируем сообщение
message_id - айди сообщения которое мы копируем
Без отправки сообщения не работает, можно было бы использовать костыль в виде мусорного чата, куда просто бы улетали все копии сообщений, но функция вида
copied_message = await bot.copy_message(chat_id=message.chat.id,  
from_chat_id=message.chat.id, message_id=msg_id)

Помещает в copied_message id сообщения-копии, которое отсылает бот в наш мусорный чат
Гуглёж выдал, что в 2 версии айограма был метод bot.get_message, но в тройке его уже нет :(
  • Вопрос задан
  • 994 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@SlavStepanyan
Aiogram и TelegramAPI не предоставляют возможность напрямую получить объект Message по chat_id и message_id. Однако, я придумал костыль, который заключается в отправке и последующем удалении временного сообщения.

Вот пример кода:

temp_message = await bot.send_message(chat_id=chat_id, text="temp", reply_to_message_id=message_id)
reply_message = temp_message.reply_to_message
await temp_message.delete()
text = reply_message.text


Так можно получить доступ к тексту и остальным данным сообщения. Минус в том, что временное сообщение на миллисекунду появляется в чате перед удалением.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы