Вызов существующей функции через кнопку, missing 1 required positional argument. Python telebot
Работаю с плагином Telebot, в начале нужно выбрать раздел, а затем нажать кнопку старт(вызвать существующую функцию), я не могу вызвать функцию getInfo без аргумента message, поэтому прикрутил сюда второй декоратор, однако это не помогло.
@bot.message_handler()
@bot.callback_query_handler(func=lambda c:True)
def startMenu(c, message):
if c.data == 'metal':
bot.send_message(c.message.chat.id, 'Установлено.')
url = 'https://directlot.ru/products.php?group=10000&so=3'
return url
if c.data == 'tree':
bot.send_message(c.message.chat.id, 'Установлено.')
url = 'https://directlot.ru/products.php?group=20000&so=3'
return url
if c.data == 'radio':
bot.send_message(c.message.chat.id, 'Установлено.')
url = 'https://directlot.ru/products.php?group=30000&so=3'
return url
if c.data == 'start':
global work
work = True
bot.send_message(c.message.chat.id, 'Мониторинг запущен.\nЧтобы остановить - напишите /stop')
getInfo(message)
При использовании кнопки с callback.data 'start' получаю следующую ошибку:
TypeError: startMenu() missing 1 required positional argument: 'c'
Моя задача состоит в том, чтобы вызвать существующую команду или функцию через кнопку.
Ответы (1 шт):
Автор решения: Muxe1
→ Ссылка
Если ответ помог, поставь галочку слева, новичёк.
import time
bot = telebot.TeleBot("ТОКЕН")
button_menu = telebot.types.ReplyKeyboardMarkup(True)
button_menu.row('/ping')
@bot.message_handler(content_types=["text"])
def default_test(message):
if message.text.lower() == "/start":
bot.send_message(message.chat.id, "Выбери действие", reply_markup = button_menu)
if message.text.lower() == "/ping":
ping(message)
def ping(message):
nick = message.from_user.username
bot.send_message(message.chat.id, f"@{nick}")
bot.polling(none_stop=True)