Ответы пользователя по тегу AIOgram
  • AIOGRAM TypeError: State.__init__() got multiple values for argument 'state' в чем может быть ошибка?

    class Question(StatesGroup):
        #Имя юзера
        name=State()
        #Вопрос юзера
        userAsk=State()
    Ответ написан
    Комментировать
  • Как получить callback_data из апдейта в aiogram?

    Используйте Callback Data Factory
    Ответ написан
    Комментировать
  • Aiogram 3, FSMContext/State: почему бот отвечает из всех фото только на последнее?

    Следует почитать на счет того как работает медиагруппа в ТГ, 5 фото в одном сообщении = 5 апдейтов.

    Я бы ушел от FSM в сторону Callback Data Factory

    # ...
    from aiogram.filters.callback_data import CallbackData
    
    
    class AnswerCallback(CallbackData, prefix='answer'):
        message_id: int
        answer_type: str
    
    
    @router.message(F.photo)
    async def photo_handle(message: Message):
        await hadnle_text(message)
    
    async def hadnle_text(message: Message):
        builder = InlineKeyboardBuilder()
        builder.add(InlineKeyboardButton(
            text="Answer 1",
            callback_data=AnswerCallback(message_id=message.message_id, answer_type='Answer 1').pack()),
        InlineKeyboardButton(
            text="Answer 2",
            callback_data=AnswerCallback(message_id=message.message_id, answer_type='Answer 2').pack()),
        )
        # Или так
        # builder.button(text="Answer 1", callback_data=AnswerCallback(message_id=message.message_id, answer_type='answer 1'))
        # builder.button(text="Answer 2", callback_data=AnswerCallback(message_id=message.message_id, answer_type='answer 2'))
        await message.answer(
            f"<b>Выберите кнопку</b>",
            reply_markup=builder.as_markup()
        )
    
    @router.callback_query(AnswerCallback.filter())
    async def text_state_callback(callback: CallbackQuery, callback_data: AnswerCallback):
        await bot.send_message(
            chat_id=callback.message.chat.id,
            text=callback_data.answer_type,
            reply_to_message_id=callback_data.message_id,
        )
    Ответ написан
    4 комментария
  • Ошибка при скачивании aiohtpps?

    aiogram==2.25.1 и aiohttp>=3.8.0,<3.9.0 указывают, что они поддерживаются максимально до Python 3.10.
    Вы пытаетесь использовать Python 3.12

    Можете скачать и почитать исходники на PyPI
    Ответ написан
    Комментировать
  • Как правильно регистрировать хендлеры для импорта?

    1. Не нашел в вашем тексте упоминаемого файла update.py
    2. В файле main.py вы пытаетесь зарегистрировать хендлеры в хендлере
    main.py
    import logging
    
    
    async def on_startup(dispatcher):
        logging.basicConfig(
            level=logging.DEBUG,
            format=u'%(filename)s:%(lineno)d #%(levelname)-8s [%(asctime)s] - %(name)s - %(message)s',
        )
        logger.info("Starting bot")
    
        # Импортируем функции регистрации хендлеров
        from update_photo import register_new_photo
        # Регистрируем хендлеры
        register_new_photo(dispatcher)
    
    
    async def on_shutdown(dispatcher):
        logging.warning('Shutting down..')
        await dispatcher.storage.close()
        await dispatcher.storage.wait_closed()
        logging.warning('Bye!')
    
    
    if __name__ == '__main__':
        from aiogram.utils import executor
        from loader import dp
    
        executor.start_polling(dp,
                               skip_updates=True,  # Если нужно пропускаем апдейты
                               on_startup=on_startup,
                               on_shutdown=on_shutdown)

    loader.py

    import os
    
    from aiogram import Bot, Dispatcher
    from aiogram.contrib.fsm_storage.memory import MemoryStorage
    
    bot = Bot(token=os.getenv("TOKEN"))
    storage = MemoryStorage()
    dp = Dispatcher(bot=bot, storage=storage)

    Ответ написан