@euiwn

Telebot, как передать функцию с двумя параметрами в callback?

Сперва создаю функцию, с помощью которой формирую list, после чего делаю return этого списка. Далее обрабатываю его, составляю сообщение бота, добавляю клавиатуру. Теперь мне нужно чтобы по нажатию на кнопку юзеру приходил тот самый список, сформированный ещё в первой функции.

def list_creation(message): #тут у меня message, т.к. список формируется в зависимости от сообщения пользователя.
    My_List= str('\n'.join(My_List))
    return My_List

def list_message(message, My_List):
    if My_List:  #проверка на пустоту списка
       bot.send_message(message.chat.id, My_List) 
    else:
        bot.send_message(message.chat.id, 'Список пуст!') 

def button(message):
    markup = types.InlineKeyboardMarkup()
    button = types.InlineKeyboardButton(text="Get_List", callback_data="list")
    markup.add(button)
    bot.send_message(chat_id=message.chat.id, text="Какой cписок Вас интересует?", reply_markup=markup)

@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call, My_List):  
    if call.data == "list":
          list_message(call.message, My_List)     # Вот тут у меня и началась проблема.
Ошибка следующая:
TypeError: callback_inline() missing 1 required positional argument: 'My_List'


Подскажите, пожалуйста, как решить мою проблему? Есть ли альтернативные варианты?
  • Вопрос задан
  • 1916 просмотров
Решения вопроса 1
@twistfire92
Python backend developer
Единственный вариант - запихивать сам список в callback_data при создании кнопки. Например в виде JSON строки. Но там ограничения на размер есть, до 64 байт.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы