Для определения типа отправленного сообщения в aiogram можно использовать атрибут `content_type` объекта `Message`. Вот пример кода:
```python
from aiogram.dispatcher.filters import ContentTypeFilter
from aiogram import Bot, Dispatcher, types, executor
# инициализация бота и диспетчера
bot = Bot(token='TOKEN')
dp = Dispatcher(bot)
# обработчик команды /start
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
await message.reply("Привет! Пришли мне что-нибудь.")
# обработчик всех отправленных сообщений
@dp.message_handler(content_types=ContentTypeFilter())
async def handle_message(message: types.Message):
content_type = message.content_type
if content_type == types.ContentType.TEXT:
await message.reply("Ты прислал мне текстовое сообщение!")
elif content_type == types.ContentType.PHOTO:
await message.reply("Ты прислал мне фото!")
elif content_type == types.ContentType.VIDEO:
await message.reply("Ты прислал мне видео!")
else:
await message.reply("Ты прислал мне что-то, но я не знаю что это.")
# запуск бота
if __name__ == '__main__':
executor.start_polling(dp)
```
В этом примере определение типа выполняется в обработчике всех отправленных сообщений. При получении сообщения бот будет проверять его тип (`content_type`) и отправлять пользователю ответ в зависимости от типа сообщения.
Чтобы определить тип файла, отправленного пользователем, можно воспользоваться атрибутом `message.document.mime_type`. Например:
```python
@dp.message_handler(content_types=types.ContentType.DOCUMENT)
async def handle_document_message(message: types.Message):
mime_type = message.document.mime_type
if mime_type == 'application/pdf':
await message.reply("Ты прислал мне PDF-файл!")
elif mime_type == 'image/jpeg':
await message.reply("Ты прислал мне JPEG-изображение!")
else:
await message.reply("Ты прислал файл, но я не знаю его тип.")
```
В этом примере обработчик будет вызываться только для сообщений с типом `DOCUMENT`. Далее будет проверяться тип файла и отправляться соответствующий ответ.