Этот вопрос закрыт для ответов, так как повторяет вопрос Как сделать таймаут боту телеграм?
@kondratev-ad

Как сделать в телеграмм боте timeout для пользователя?

Пишу бота на aiogram 2.x. Бот предназначен для личного общения с пользователем. Как можно сделать общий timeout на всего бота (сейчас действия разделены по State()), чтобы при бездействии пользователя, бот говорил пока и сбрасывал состояние?
Пример: После старта, пользователю отправляется Привет, и переходит в State1. Бот ждет ответа от пользователя в answer. Как сделать timeout этого answer, то есть например через 60 секунд не ждать ответа?
class MyState(StatesGroup):
    state1 = State()

@dp.message_handler(commands=['start'])
async def process_start_command(message: Message, state: FSMContext):
    await bot.send_message(                                 # отправка пользователю Привет
            message.chat.id,
            'Привет',
        )
    await state.set_state(MyState.state1.state)        # переход в state state1

@dp.message_handler(state=MyState.state1, content_types=ContentTypes.TEXT)    # timeout действия пользователя
async def answer(message: Message, state: FSMContext):
    await bot.send_message(
            message.chat.id,
            message.text,
        )
  • Вопрос задан
  • 822 просмотра
Ответы на вопрос 1
@shadrin_ss
Junior
Лови сообщение и не бросай его state, ты же в хендлерах принимаешь весь объект с текстом сообщения
И если ответа нет то получается бот не ждет ответа, а если ответ поступил и тебе дальше нужно опросить юзера запускай state
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы