Передача функции значения через register_next_step_handler в telebot python

Я столкнулся с проблемой использования register_next_step_handler в библиотеке telebot. У меня есть две функции block и unblock, которые отличаются только значением, записываемым в базу данных. Для вызова этих этих функций я использую register_next_step_handler. Я хочу объединить эти две функции в одну, куда будет передаваться значение, записываемое в БД. Вопрос: как реализовать вызов этой функции с передачей нужного значения


Ответы (1 шт):

Автор решения: Amgarak

Если я вас правильно понял, то можно реализовать всё через lambda функцию:

import telebot
bot = telebot.TeleBot('TOKEN')

def data_processing(message, data):
    bot.send_message(message.chat.id, f"Данные '{message.text}' - '{data}' !")

@bot.message_handler(commands=['block'])
def block_command(message):
    bot.register_next_step_handler(message, lambda message: data_processing(message, 'blocked'))
    bot.send_message(message.chat.id, "Введите данные для блокировки:")

@bot.message_handler(commands=['unblock'])
def unblock_command(message):
    bot.register_next_step_handler(message, lambda message: data_processing(message, 'unblocked'))
    bot.send_message(message.chat.id, "Введите данные для разблокировки:")

bot.polling()

Идея в чем:

  1. Регистрируем анонимную функцию принимающею один аргумент на вход.
  2. Анонимная функция вызывает нужную функцию, которая уже принимает 2 параметра.
→ Ссылка