@wzaxc
Ищу своё направление, знаю базовый питон.

Как проверить юзера на наличие в бд aiogram?

Хочу проверить юзера в тг боте на наличие в бд, а если его нету, то попросить оставить заявку. Вопрос, как это можно осуществить? Через колбэк не получилось
Функция на проверку юзера в бд:
with Session(autoflush=False, bind=engine) as db: 
    async def set_user(tg_id):
        user = db.query(Person).filter(Person.tg_id==tg_id).first()
        if user == None:
            callback_data='notExists'
        else:
            pass

Хэндлеры:
@router.message(CommandStart())
async def cmd_start(message:Message):
    await message.answer('Привет! Для использования бота вам нужно оставить заявку.')
    await run.set_user(message.from_user.id)

@router.callback_query(F.data=='notExists')
async def request(callback:CallbackQuery):
    await callback.answer('Вы должны подать заявку')
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
Wispik
@Wispik
Зачем тут колбек? Это же обычное условие
@router.message(CommandStart())
async def cmd_start(message:Message):
    # user_in_bd = тут из функции проверки пользователя в бд получаешь True или False
    if user_in_bd:
        await message.answer('Привет!)
    else: 
        await message.answer('Привет! Для использования бота вам нужно оставить заявку.')

Ну это если надо проверить пользователя только в команде start. А если надо на всех запросах проверять, то через middleware нужно делать
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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