Переслать сообщение в telegram bot aiogram python
Есть кусок кода:
@dp.message_handler(state=Test.Q4)
async def answer_q3(message:types.Message, state: FSMContext):
await message.answer("Спасибо за обращение!", reply_markup=types.ReplyKeyboardRemove())
reply = await message.answer(f"Тип обращения: {question_type}\nНазвание : {seller_name}\nТекст вопроса: "f"{question_text}")
reply = reply.text
extra_add = question_extra
await dp.bot.send_message(1234567, reply + "\nДополнительно: ")
await dp.bot.send_message(1234567, extra_add)
await state.reset_state()
До этого куска кода бот запрашивает польльзователя отправить дополнительную информацию, это может быть что угодно - текст, фото, видео. Нужно, что бы это сообщение было отловлено хэндлером и просто переслано по нужной мне айдишке другому пользователю. Сейчас это работает только с текстом, а медиа улетает в дефолтный хендлер с состоянием Q4.
Ответы (2 шт):
В зависимости от типа сообщения Вам нужно использовать разные методы:
- sendMessage -> для текста
- sendPhoto -> для фотографий
- sendDocument -> для документов
В aiogram это будет выглядеть примерно так:
async def answer_q3(message: types.Message, state: FSMContext):
text = f"Тип обращения: {question_type}\n" \
f"Название : {seller_name}\n" \
f"Текст вопроса: {question_text}\n\n" \
f"Дополнительно: {question_extra}"
if message.text is not None:
await bot.send_message(1234567, text)
elif message.photo is not None:
await bot.send_photo(chat_id=1234567, photo=message.photo[-1].file_id,
caption=text)
elif message.document is not None:
await bot.send_document(chat_id=1234567, document=message.document.file_id,
caption=text)
await state.reset_state()
Я указал пример пересылки сообщения в конкретный чат, и немножко оптимизировал код, полностью Вашу логику дополните сами :)
Используйте метод forwardMessages. MyZik предложил рабочее решение, но на мой взгляд будет более удобным и правильным использование специально предназначенного для этого метода (при условии, что вы хотите просто пересылать сообщение, а не воссоздавать его). UPD. Извиняюсь, что без примера кода