我想让内联按钮的回调启动另一个功能,但我遇到了另一个问题。当我尝试使用处理程序时,出现此错误:
Traceback (most recent call last):
File "C:\PyProjects\IssBot\bot.py", line 33, in <module>
@bot.callback_query_handlers(func=lambda c: True)
TypeError: 'list' object is not callable
代码:
#bot.py
import telebot
from telebot.types import Message
import keyboards as kb
'''
@bot.callback_query_handlers(func=lambda call: True)
def process_callback_startkb(call):
if call.data == 'btn_new':
new_command_handler(call.message)
@bot.message_handler(commands=['start'])
@bot.edited_message_handler(commands=['start'])
def starting_bot(message):
bot.reply_to(message, "Text", reply_markup=kb.start_inline_kb)
@bot.message_handler(commands=['new'])
def new_command_handler(message: Message):
msg = bot.reply_to(message, 'Text')
bot.register_next_step_handler(msg, song_name)
#keyboards.py
from telebot import types
inline_btn_new = types.InlineKeyboardButton("Text", callback_data='btn_new')
inline_btn_help = types.InlineKeyboardButton("Text", callback_data='btn_help')
start_inline_kb = types.InlineKeyboardMarkup(row_width=2)
start_inline_kb.row(inline_btn_new, inline_btn_help)
尝试了不同的处理程序使用方式。我从 Telebot 上的官方文档中尝试过的这个,并尝试了这个:
@bot.callback_query_handler(func=lambda call: 'btn_new' in call.data)
和
@bot.callback_query_handler(func=lambda call: call.data in 'btn_new')
和
@bot.callback_query_handler(func=lambda call: call.data in ['btn_new', 'btn_help'])
等