Telegram 游戏:中级指南
我最近在 Telegram 上创建了一个游戏。这不是我的第一个 Telegram 机器人,但这将是我的第一个游戏。因此,我首先查看了 Telegram游戏平台的官方文档。
读的时候,我觉得它对细节的描述相当简略。我还希望他们能直接链接到机器人 API 文档,这样我就能看到具体涉及的对象、方法和字段。
本指南旨在提供比现有文档略微更详细的信息(以及实用链接),但并非循序渐进的指南。它与语言无关,因此无论您选择使用哪种语言编写机器人和游戏,都可以应用这些概念。
创建游戏
/newbot
使用@BotFather创建一个Telegram机器人- 使用以下方式为机器人启用内联模式
/setinline
- 使用创建新游戏
/newgame
经过此过程后,您将获得您的机器人令牌和您的game_short_name
,稍后将使用它们。
启动游戏
以下是文档内容:
一旦游戏创建完成,您的机器人就可以将其作为常规消息发送到聊天中,或通过内联模式提供。
让我们来分析一下。
首先阅读有关内联模式和回调按钮的信息可能会有所帮助。
将游戏作为常规消息发送到聊天室
例如,您可以让机器人/start
通过发送游戏来响应命令(或您选择的任何其他命令/短语)。
这是幕后发生的事情的序列图。
- 用户使用您选择的短语发起对话
- 您的机器人将收到一个包含已发送消息的Message对象
- 您可以使用
sendGame
API 进行响应,这相当简单,因为唯一必填字段是chat_id
和game_short_name
(从设置过程来看) - 机器人发送一条带有游戏的消息和一个“玩游戏名称”回调按钮
接下来发生回调交互。
- 用户点击“玩游戏名称”
- Telegram向您的
CallbackQuery
机器人发送game_short_name
- 你的机器人会
answerCallbackQuery
通过游戏 URL 进行调用 - Telegram 打开游戏的网址
通过内联模式提供游戏
这是最让我困惑的部分。
这是用户、Telegram 和您的机器人之间交互的等效序列图。
- 用户在任何聊天中输入“ @your_bot_username ”即可发起互动
InlineQuery
Telegram向您的机器人发送- 你的机器人会
answerInlineQuery
用一系列InlineQueryResultGame
- Telegram 将结果显示给用户
- 用户从列表中选择一个游戏
- 用户向游戏发送一条消息(通过您的机器人)和一个“玩游戏名称”回调按钮。
通过回调交互启动游戏的剩余流程与之前相同。
结论
本指南详细说明了启动游戏时用户、Telegram 和您的机器人之间的交互。
这两种方法之间一个有趣的区别是:在第一种情况下,机器人是发送包含游戏消息的人。在第二种情况下,发起内联查询的用户是发送游戏消息的人。这是因为机器人可能不是群聊的成员(因为群聊是内联交互)。
希望本指南对您有所帮助,祝您编码愉快!
文章来源:https://dev.to/xlzior/telegram-games-an-intermediate-guide-45io