请告诉我如何正确使用 inlineButton,就像我按照示例所做的那样,但它仍然不起作用。我得到一个错误
2017-05-28 17:47:48,933 (__init__.py:250 MainThread) ERROR - TeleBot: "A request to the Telegram API was unsuccessful. The server returned HTTP 400 Bad Request. Response body:
[b'{"ok":false,"error_code":400,"description":"Bad Request: BUTTON_DATA_INVALID"}']"
parse.get_events 函数返回以下形式的锦标赛列表:
['Пляжный футбол', 'Пляжный футбол. Кубок Европейских Чемпионов', 'Футбол. Германия. Оберлига']
我想用每个按钮制作一个按钮
import sqlite3
from telebot import types
import parse
bot = telebot.TeleBot(constants.token)
def pages_keyboard(m):
"""Формируем Inline-кнопки для перехода по страницам.
"""
keyboard = types.InlineKeyboardMarkup()
btns = []
for i in m:
btns.append(types.InlineKeyboardButton(text=i, callback_data=i))
keyboard.add(*btns)
return keyboard # возвращаем объект клавиатуры
@bot.message_handler(func = lambda message: 'Футбол' in message.text)
def handler_soccer(message):
bot.send_message(message.chat.id, 'Выбирай', parse_mode = 'Markdown', reply_markup = pages_keyboard(parse.get_events('Футбол')))
答案很简单——参数
callback_data有权重限制。显然,您的Inline 键盘中的第二个和第三个按钮的重量超过了允许的重量(这就是Telegram服务器发誓的原因)。
减少接受到变量中的字符数
callback_data。通过更改为以下内容来检查代码是否有效: