Я хочу создать аналог register_next_step_handler из telebot для alogram. Как я уже понял, для этого я должен использовать FSM. Однако я не могу понять, что мне следует делать на этом примере:
@bot.message_handler(func=lambda message: message.text == " Prohibit publication for a while")
def prohibit_sending_messages_button(message):
msg = bot.send_message(message.chat.id, "Enter the blocking time in minutes (0 for cancellation; multiply by 60/1440 to indicate hours/days):")
bot.register_next_step_handler(msg, block_sending_for_minutes)
def block_sending_for_minutes(message):
global acceptable_time
# Change acceptable_time value to actual time + chosen time (can be mathematical expression)
acceptable_time = message.date + eval(message.text) * 60
bot.send_message(message.chat.id, f"The ban on sending messages will be in effect until {datetime.fromtimestamp(acceptable_time).strftime("%H:%M:%S %d/%m/%Y")}")
Я пробовал написать это:
@router.message(is_admin & F.text == " Prohibit publication for a while")
async def prohibit_sending_messages_button(message: Message, state: FSMContext) -> None:
await state.set_state(Form.blocking_time)
await message.answer("Enter the blocking time in minutes (0 for cancellation; multiply by 60/1440 to indicate hours/days):")
@router.message(Form.blocking_time)
async def block_sending_for_minutes(message: Message) -> None:
global acceptable_time
# Change acceptable_time value to actual time + chosen time (can be mathematical expression)
acceptable_time = message.date + eval(await message.text) * 60
await message.answer(f"The ban on sending messages will be in effect until {datetime.fromtimestamp(acceptable_time).strftime("%H:%M:%S %d/%m/%Y")}")
Мои вопросы:
1. Нужно ли мне создавать для этого отдельный класс, если да, то должен ли я поместить все классы FSM в отдельный файл и как правильно назвать класс и переменную?
2. Нужно ли мне использовать state.clear(), если да, то как мне получить state, если нет, то получается, что я просто больше не использую этот класс?