Telegram bot callback_data передать несколько аргументов

one_player

Новичок
Пользователь
Июл 31, 2020
2
0
1
Добрый день. Подскажите как передать несколько значений через callback_data
Вот таким образом формирую кнопки из базы данных
Python:
markup.add(telebot.types.InlineKeyboardButton(text=result [3], callback_data=result [1]))

В callback_data=result [1] передается наименование города. Но мне необходимо передать еще одно значение что бы по нему сформировать ответ в хендлере на основе города
т.е. как мне в
Python:
@bot.callback_query_handler(func=lambda call: True)
def query_handler(call):
   elif call.data == ????????:
        ...
получить 2 значения
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Параметр callback_data должен быть строкой. Поэтому чтобы передать несколько значений можно их объединить в строку (с разделителями), а хэндлере распарсить эту строку:
Python:
s = str(result[1]) + '|' + 'второй параметр'
markup.add(telebot.types.InlineKeyboardButton(text=result [3], callback_data=s))

@bot.callback_query_handler(func=lambda call: True)
def query_handler(call):
    first_param = call.data.split('|')[0]
    second_param = call.data.split('|')[1]
    if first_param == ????????:
 

one_player

Новичок
Пользователь
Июл 31, 2020
2
0
1
Да это работает. Но судя по всему в дальнейшем буду об это спотыкаться при масштабировании def query_handler(call):
Но в любом случае Благодарю за помощь.(y)
 

Xakn

Новичок
Пользователь
Май 10, 2021
3
0
1
https://t.me/pump_upp
спасибо )(y)
 

Форум IT Специалистов