@tortyana

Как проверить тип отправленного сообщения в aiogram?

Есть вот такой вот код. Бот получает от пользователя видео или сообщение. Как проверить, что отправил пользователь?

class user_data(StatesGroup):
media1 = State()
media2 = State()

....
@dp.message_handler(content_types=['photo', 'video'], state=user_data.media2)
async def media2(message: types.Message, state: FSMContext) -> None:
async with state.proxy() as data:
if message.content_type == 'photo':
data['media2'] = message.photo[0].file_id
else:
data['media2'] = message.video.file_id
many_data = await state.get_data()
fil1 = many_data['media1']
fil2 = many_data['media2']

if fil1 == ['video']: # Тут он должен определить тип файла
await message.reply('Вы отправили видео')
elif fil1 == ['photo']: # Тут он должен определить тип файла
await message.reply('Вы отправили фото')

Как правильно написать условие?
  • Вопрос задан
  • 441 просмотр
Пригласить эксперта
Ответы на вопрос 1
@KIRRusS
ну я бы сделал так)) код читабельный, думаю вопросов возникнуть не должно))

import logging
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage

logging.basicConfig(level=logging.INFO)

API_TOKEN = 'токен'

bot = Bot(token=API_TOKEN)
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)

@dp.message_handler(content_types=['video'])
async def video(message):
await message.answer('Вы отправили видео')

@dp.message_handler(content_types=['voice'])
async def video(message):
await message.answer('Вы отправили Голосовое сообщение')
if __name__ == '__main__':
from aiogram import executor

executor.start_polling(dp, skip_updates=True)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы