Я использую библиотеку aiogram
код:
from aiogram import Bot, Dispatcher, executor, types TOKEN = "" bot = Bot(token=TOKEN) dp = Dispatcher(bot) class Button(object): addurlname = None names = None bt = Button() buttonad = types.InlineKeyboardMarkup(row_width=1) buttonbuttonad = types.InlineKeyboardButton(f"{bt.names}", url=f"{bt.addurlname}") buttonad.add(buttonbuttonad) # записываем какое будет название кнопки @dp.message_handler(commands=["start"]) async def welcome(message): await bot.send_message(message.chat.id, "Привет, введи имя") bt.names = message.text return bt.names # записываем какое будет URL @dp.message_handler(commands=["url"]) async def urlwelcome(message): await bot.send_message(message.chat.id, "Привет, введи url") bt.addurlname = message.text return bt.addurlname # Команда чтобы увидеть кнопку @dp.message_handler(commands=["check"]) async def check(message): await bot.send_message(message.chat.id, "Привет", reply_markup=buttonad)
Проблема заключается в том, что кнопка(Inline) принимает значение - Имя кнопки: None, url: None;
И тут два варианта либо кнопка вообще не срабатывает потому что url должен начинаться с http(дальше объяснение почему даже если ссылка у вас начинается http), но если мы сразу напишем в классе Button() какую нибудь ссылку, то кнопка покажется(даже когда мы попытались изменить эту переменную в команде url), но название кнопки будет None, хотя я изменил значение имени кнопки, когда писал команду start.
Вывод из выше сказанного такой - inline кнопке вообще все равно если значение было изменено, оно примет значения которые были запущены с кодом, я хочу это исправить
Кто-то может сказать используй FSM, но нет, мне оно только помешает во всём коде, мне надо понять почему Inline кнопка не хочет использовать новые значения переменной
UPD: добавил полностью рабочий код, при копировании у вас может первая строчка уйти вправо