Хочу сделать аналог Register_next_step_handler от телебота для айограммы. Как я уже понял, для этого мне придется использовать 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")}")
Мои вопросы:
Нужно ли мне создавать для этого отдельный класс, если да, следует ли мне поместить все классы FSM в отдельном файле и как правильно называть класс и саму переменную?
Нужно ли мне использовать state.clear(), если да, то как мне получить гос, если нет, то получается, что я просто больше не использую этот класс?
Хочу сделать аналог Register_next_step_handler от телебота для айограммы. Как я уже понял, для этого мне придется использовать FSM. Однако я не могу понять, что мне делать с этим примером: [code]@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")}") [/code] Я попробую сделать так: [code]@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")}") [/code] Мои вопросы: [list] [*]Нужно ли мне создавать для этого отдельный класс, если да, следует ли мне поместить все классы FSM в отдельном файле и как правильно называть класс и саму переменную? [*]Нужно ли мне использовать state.clear(), если да, то как мне получить гос, если нет, то получается, что я просто больше не использую этот класс? [/list]
Я пишу драйвер событий для проекта, над которым я работаю, и я использую стандартную систему событий браузера в качестве модели, что заставило меня посмотреть его более подробно. Я тестирую вещи на Edge и...
У меня есть чем заняться для работы, и мне нужна ваша помощь.
Мы хотим реализовать FSM - конечный компьютер , чтобы идентифицировать последовательность Char (например: A, B, C, A, C), и скажите, принято ли она. Узел В FSM мы подумали, чтобы...