Как передать аргумент в обработчик для кнопок inline-клавиатуры? pyTelegramBotApi
Есть одна проблема, с которой я столкнулся при написании не одного уже бота - как передать аргумент в обработчик для кнопок встроенной клавиатуры типа InlineKeyboardMarkup?
Предположим я создал для пользователя экземпляр браузера с помощью библиотеки selenium вот таким образом:
driver = webdriver.Chrome("D:\chromedriver.exe")
driver.get("https://link")
Примите во внимание, что переменная driver не глобальная и передается с одной функции в другую. Пример кода:
@bot.message_handler(content_types=["text"])
def Mode1(message):
driver = webdriver.Chrome("D:\chromedriver.exe")
driver.get("https://link")
msg = bot.send_message(message.chat.id, "Beta-режим активирован")
key = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton(text="Пример 1", callback_data = "Пример 1")
btn2 = types.InlineKeyboardButton(text="Пример 2", callback_data = "Пример 2")
key.add(btn1, btn2)
msg = bot.send_message(message.chat.id, element.text, reply_markup = key)
driver.find_element_by_xpath('//*[@id="source"]').click()
return bot.register_next_step_handler(msg, Mode2, driver)
def Mode2(message, driver):
driver.get("https://link")
# И так далее
И есть обработчик нажатий inline-клавиатуры:
@bot.callback_query_handler(func=lambda c:True)
def inline(c):
# def inline(c, driver): # предположительно, что я хочу реализовать
if c.data == "Пример 1":
# вот сюда нужно передать экземпляр браузера driver(не глобальной переменной!)
# чтобы можно было получить объект из этого экземпляра
#
#Что-то типа такого: driver.find_element_by_xpath('//*[@id="source"]').click()
elif c.data == "Пример 2":
pass
Подскажите пожалуйста, где нужно указать в обработчике нажатий аргумент driver, который я хочу передать? Не обязательно, чтобы аргумент был driver - какой-угодно можно передать, но вопрос в том - каким образом его туда передать?
Каким из способов не пробовал - не получается этого сделать.