Запись переменной через кнопку

Можете подсказать, как можно по нажатию кнопки записать данные в переменную? Точнее, насколько обработчик этой кнопки будет большой, или это можно будет сделать в аргументах кнопки. Или мне попробовать это реализовать через callback_data, которые можно будет перезаписывать? У меня всплывает много вариантов решения этой "сложной" задачи, но не могу понять как будет правильнее

Код:

@dp.callback_query_handler(text="vipcount")
async def vipcount(query: CallbackQuery):
    keyboard = InlineKeyboardMarkup(row_width=3).add(
        InlineKeyboardButton(text=1, callback_data="buyvip"), #<--- эта кнопка должна поставить в переменную какое-либо значение
        InlineKeyboardButton(text=2, callback_data="buyvip"),
        InlineKeyboardButton(text=3, callback_data="buyvip")
    )
    await query.message.edit_text(text, reply_markup=keyboard)

Обработчик, который будет использовать эти переменные планируется реализовать отдельно, не в этой функции. Заранее спасибо за помощь?

p.s. пишу на уставшую голову. если что-то надо будет объяснить подробнее - на связи


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

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

Из задачи вам нужно что-то типо этого.

#Клавиатуру сделай так
keyboard = InlineKeyboardMarkup(row_width=3).add(
    InlineKeyboardButton(text=1, callback_data="buyvip:1"), #<--- эта кнопка должна поставить в переменную какое-либо значение
    InlineKeyboardButton(text=2, callback_data="buyvip:2"),
    InlineKeyboardButton(text=3, callback_data="buyvip:3")
)

variable = 0

@dp.callback_query_handler(text_startswith="buyvip")
async def buyvip(query: CallbackQuery):
    await query.answer()
    global variable
    variable = int(query.data.split(":")[1])
→ Ссылка