Как определять что прислал юзер в tg aiogram?
Ку!
@dp.message_handler(state=CellarImport.check)
async def enter_volume(message: types.Message, state: FSMContext):
answer = message.text
await state.update_data(answer4=answer)
if answer == 'Отменить ❌':
await message.answer('Вы возвращены в главное меню.', reply_markup=kbmain)
await state.reset_state(with_data=False)
if answer == 'Подтвердить ✅':
await CellarImport.next()
await message.answer(f"Отправь мне то, что надо будет разослать ?", reply_markup=types.ReplyKeyboardRemove())
for i in range(0, cn):
await bot.send_message(answerq[i], message.text)
как мне сделать, чтобы если человек прислал гифку, фото или другой тип то он тоже пересылался? сейчас пересылается только текстовый тип сообщения.
Ответы (2 шт):
Автор решения: tomato-magnet-regulato
→ Ссылка
@dp.message_handler(content_types=['text', 'photo', 'video', 'document'])
async def send_msg(message:types.Message):
if message.text:
await bot.send_message(chat_id, message.text)
elif message.photo:
await bot.send_photo(chat_id, message.photo[-1].file_id)
elif message.video:
await bot.send_video(chat_id, message.video.file_id)
elif message.document:
await bot.send_document(chat_id, message.document.file_id)
else:
await message.answer('Error')
Как-то так делаю я, возможно есть более лаконичное решение.
Помимо прочего, если вам потребуется пересылать подпись к фото или видео, не забывайте добавлять caption
elif message.photo:
cptn = message.caption
await bot.send_photo(chat_id, message.photo[-1].file_id, caption = cptn)
elif message.video:
cptn = message.caption
await bot.send_video(chat_id, message.video.file_id, caption = cptn)
Автор решения: oleksandrigo
→ Ссылка
Да есть более простой способ и вот он:
@dp.message_handler(content_types=types.ContentTypes.ANY)
Ловит все типы сообщений.