Передача функции значения через 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()
Идея в чем:
- Регистрируем анонимную функцию принимающею один аргумент на вход.
- Анонимная функция вызывает нужную функцию, которая уже принимает 2 параметра.