Как можно получить текст сообщения, зная идентификатор чата и идентификатор сообщения в Aiogram 3.xx? Функция `bot.copy_message` требует указания трех аргументов: `chat_id` (идентификатор чата, куда копируется сообщение), `from_chat_id` (идентификатор чата, откуда копируется сообщение) и `message_id` (идентификатор копируемого сообщения). Как обойти эту проблему без отправки сообщения настоящему чату и использования "мусорного" чата?
В версии 3.x библиотеки Aiogram вы можете получить текст сообщения, зная его идентификатор (id), следующим образом: 1. Используйте метод `bot.get_message(chat_id, message_id)`, где `chat_id` - идентификатор чата, в котором находится сообщение, а `message_id` - идентификатор самого сообщения. Например: ```python message = await bot.get_message(chat_id, message_id) text = message.text ``` 2. Если у вас есть только идентификатор чата и идентификатор сообщения, вы можете использовать метод `bot.copy_message` для копирования сообщения в "мусорный" чат и получения текста. Например: ```python from_chat_id = chat_id chat_id = '123456789' # "Мусорный" чат copied_message = await bot.copy_message(chat_id, from_chat_id, message_id) text = copied_message.text ``` После получения текста сообщения вы можете использовать его по своему усмотрению.
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
Так можно получить доступ к тексту и остальным данным сообщения. Минус в том, что временное сообщение на миллисекунду появляется в чате перед удалением.