Как правильно использовать FSM в айограмме для регистрации обработчика следующего сообщения?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как правильно использовать FSM в айограмме для регистрации обработчика следующего сообщения?

Сообщение Anonymous »

Хочу сделать аналог 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(), если да, то как мне получить гос, если нет, то получается, что я просто больше не использую этот класс?


Подробнее здесь: https://stackoverflow.com/questions/790 ... ge-handler
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»