26
Ноя
2021

Aiogram. Как проверить тип полученнокго контента

Я хочу написать телеграмм бота на python с использованием библиотеки aiogram. Мне нужно чтобы пользователь отправил боту фотографию. Вот кусок кода и функция которую я использую для получения и сохранения изображения.

from aiogram import types, Dispatcher
from create_app import dp, bot
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup
import os, sys, pathlib

class FSMRegister(StatesGroup):
    shop = State()
    name = State()
    position = State()
    photo = State()

...

async def reg_photo(message : types.Message, state: FSMContext):
    async with state.proxy() as data:
        data['photo'] = message.photo[0].file_id
    file_info = await bot.get_file(message.photo[0].file_id)
    filename, file_extension = os.path.splitext(file_info.file_path)
    await message.photo[-1].download('uploads/image' + file_extension)
    async with state.proxy() as data:
         await message.reply(str(data))
    await state.finish()

def register_handlers_register( dp : Dispatcher ):
    ...
    dp.register_message_handler(reg_photo, content_types=['photo'], state=FSMRegister.photo)

Но если пользователь отправляет вместо фотографии другой тип файла или текст то функция не срабатывает. Как мне сделать что-бы при возникновении такой ситуации бот в ответ отправлял сообщение о некорректности отправленных данных?

Источник: https://ru.stackoverflow.com/questions/1354087/aiogram-%D0%9A%D0%B0%D0%BA-%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%B8%D1%82%D1%8C-%D1%82%D0%B8%D0%BF-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%BD%D0%BE%D0%BA%D0%B3%D0%BE-%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82%D0%B0

26
Ноя
2021

Aiogram. Как проверить тип полученнокго контента

Я хочу написать телеграмм бота на python с использованием библиотеки aiogram. Мне нужно чтобы пользователь отправил боту фотографию. Вот кусок кода и функция которую я использую для получения и сохранения изображения.

from aiogram import types, Dispatcher
from create_app import dp, bot
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup
import os, sys, pathlib

class FSMRegister(StatesGroup):
    shop = State()
    name = State()
    position = State()
    photo = State()

...

async def reg_photo(message : types.Message, state: FSMContext):
    async with state.proxy() as data:
        data['photo'] = message.photo[0].file_id
    file_info = await bot.get_file(message.photo[0].file_id)
    filename, file_extension = os.path.splitext(file_info.file_path)
    await message.photo[-1].download('uploads/image' + file_extension)
    async with state.proxy() as data:
         await message.reply(str(data))
    await state.finish()

def register_handlers_register( dp : Dispatcher ):
    ...
    dp.register_message_handler(reg_photo, content_types=['photo'], state=FSMRegister.photo)

Но если пользователь отправляет вместо фотографии другой тип файла или текст то функция не срабатывает. Как мне сделать что-бы при возникновении такой ситуации бот в ответ отправлял сообщение о некорректности отправленных данных?

Источник: https://ru.stackoverflow.com/questions/1354087/aiogram-%D0%9A%D0%B0%D0%BA-%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%B8%D1%82%D1%8C-%D1%82%D0%B8%D0%BF-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%BD%D0%BE%D0%BA%D0%B3%D0%BE-%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82%D0%B0

Тебе может это понравится...

Добавить комментарий