Python开发Telegram游戏Bot:如何创建callback_game指定按钮?
解决Telegram游戏Bot中callback_game按钮的正确配置问题
你的代码存在两个关键问题,导致无法生成符合要求的游戏启动按钮:
- 调用
bot.send_game时未传入已创建的按钮标记(reply_markup设为了None),导致按钮根本不会被发送 callback_game参数用法错误,它需要传入types.CallbackGame()对象,而非字符串
以下是修正后的完整代码:
@bot.message_handler(commands=['start']) def send_game(message): user_id = message.chat.id # 替换为你在BotFather处注册的游戏短名称 game_short_name = "your_registered_game_name" markup = types.InlineKeyboardMarkup(row_width=2) # 正确创建带callback_game的游戏启动按钮 game_button = types.InlineKeyboardButton("Play Game", callback_game=types.CallbackGame()) markup.add(game_button) # 发送游戏时传入按钮标记,注意timeout参数为布尔值(首字母大写) bot.send_game( chat_id=user_id, game_short_name=game_short_name, reply_markup=markup, disable_notification=True, timeout=False )
额外注意事项:
- 必须先在BotFather完成游戏注册,
game_short_name要与注册时填写的完全一致,否则无法关联到你的游戏 - 若需添加其他功能按钮(如排行榜、分享),可通过
markup.add()继续添加,但首个按钮必须是带callback_game的启动按钮 - 确保使用的python-telegram-bot库为最新版本,旧版本对
callback_game的支持可能存在兼容性问题
内容的提问来源于stack exchange,提问作者mhawk
相关产品推荐
相关产品推荐

