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

Как вызвать через время функцию в асинхронном боте телеграмм?

Есть значит такой вопрос..
У меня бот телеграмм(aiogram) в функции бота входят и машины состояний... Прикол в том что сообщения через время удаляются, как мне сделать что бы через тоже время удалась машина состояний. То есть, человек нажимает кнопку "заказать" и ему выпадает сообщение, к которому привязаны кнопки и вдруг человек предположим вышел, спустя час пользователь до сих пор не в сети, бот удаляет это сообщение, а вот стейт нет, если юсер зайдет и напишет /start, команда не запуститься, т.к. пользователь в машине состояний...
вот так вызывается у меня таймер удаление сообщений.
async def test_message(message: types.Message)
       msg = await message.answer('TEST')
        date = datetime.now() + timedelta(seconds=10)
        scheduler.add_job(delete_message, "date", run_date=date, kwargs={"message": msg})

Вот предположим через 10 секунд так же, вызывалось отмена стейта, я отменяю вот так:
async def not_state(message: types.Message, state: FSMContext):
    await message.delete()
    current_state = await state.get_state()
    if current_state is None:
        return
    await state.finish()
    if message.from_user.id == ID:
        await message.answer('Действие отменено', reply_markup=main_keyboard_admin)
    else:
        await message.answer('Действие отменено', reply_markup=main_keyboard)

и вызов этого хандлера происходит вот так:
dp.register_message_handler(not_state, Text(equals='Отмена', ignore_case=True), state='*')

что делать?
  • Вопрос задан
  • 58 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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