Задать вопрос
@vitafon007

Как сделать чтобы хендлер Aiogram выбирался по значению в sql бд?

Всем привет
В aiogram существует такая вещь как "state"
В зависимости от состояния активируется нужный хендлер
Есть разные варианты хранения данных (оперативка, nosql)
Хранить данные в оперативке не надежно, перезапуск скрипта и софт не помнит о чем говорил с юзером, nosql к сожалению не поддерживает хостинг
Есть хостинг с mariadb
Как можно реализовать чтобы при получении сообщения бот смотрел статус пользователя в базе например столбец tg_id, status и в зависимости от статуса выбирал хендлер и сразу отвечал?

Не могу никак решить эту задачку. Может есть аналог state с обработчиком
  • Вопрос задан
  • 230 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Python-разработчик
    9 месяцев
    Далее
  • SF Education
    Бэкенд-разработчик на Python
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 1
@paxa-1331
Честно говоря не знаю как реализовать правильно, но мне пришла такая идея:

Записываем в бд, какой хендлер нажал пользователь и в дальнейшем, делаем проверку.

К примеру:

@dp.message_handler(state=tovar.new_tovar)
async def cmd_start(message: types.Message,state: FSMContext):
    await state.update_data(tovar1=message.text)
    c.execute("UPDATE user_stat SET stat_id= ? WHERE id = ? ",(message.chat.id,"tovar.new_tovar",))
    await message.reply(f'Отправьте фото товара',reply_markup =kb.back1)
    await tovar.new_tovar_name.set()


Ну и собственно как получить, я думаю уже сам догадаешься )
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы