为 Telegram 开发 bot
为 Telegram 开发 bot
Telegram 是一款足够优秀的即时通讯应用,对 Bot 的支持,使它的能力更为强大,那么如何为 Telegram 开发 Bot?
强大的 Bot
Bot 本身能支持收发消息,这是基本的技能。然后支持 /commond
形式的命令。在 Bot perks 提到了 Bot 一些强大的功能。
Inline mode
当你在输入框里 @bot 的时候,它就可以开始工作了,比如 @unobot 在这个时候会列举你可以出的牌,而这不同于命令或者其它发出去的消息 – 这对其他人是不可见的。之后 Bot 会以你的名义发出一条消息,可以是文字,图片,贴纸等等,只不过多了一条由 @bot 发出的消息。
使用这一能力的 bot,我记得 Text sticker (@big_text_bot) 可以获取文本框中的文字,并做成一张贴纸,出现在候选位置,点击可以发送。
再就是 @unobot 了,使用 @unobot 来获取当前可用的牌
自定义键盘
Bot 可以指定回复用的键盘,可以定制需要的按键,比如做成 Yes 和 No。在这一点上,我想到的一个比较神奇的 bot 是 Chess Bot
看名字就知道,这是一个拿来下国际象棋的 Bot,然后你要怎么告诉 Bot 出哪个棋子走到哪里呢?看下自定义键盘吧:
自定义键盘列举了你当前可以走的棋子,点击之后会展示可以走到的位置。选择棋子之后,键盘又变成了之前的样子,然后 bot 把新的棋局以图片的形式发给你。
然后这个键盘还支持 Inline keyboards and on-the-fly updating,是直接在一条消息下面跟上自定义的键盘,点击之后 bot 可以直接更新消息和键盘。很适合做一些投票之类的互动。
Deep Linking
Telegram 机器人有一个深层链接机制,允许在启动时将其他参数传递给机器人。它可以是启动机器人的命令 - 或用于将用户的Telegram帐户连接到某些外部服务上的帐户的身份验证令牌。
// 上面这一段是完全 Google 翻译的,没有经过任何修改
Privacy mode
Bot 默认启用 Privacy mode,Bot 只会收到明确是发送给 Bot 的消息,而不是所有的消息。当然这一机制可以关闭。
其它
申请 Bot 帐号
Telegram 是一个强大的即时通讯应用,其官方支持机器人帐号,并且机器人的自由度又比较高,可以那来做很多有趣的事情,比如使用 @unobot 在群里打 UNO
Telegram 的 bot 帐号需要和 @BotFather 对话来创建。BotFather 会你一些问题,比如机器人的名字等等。然后你还可以通过和 BotFather 对话来更改 bot 的各种信息。比如 Privacy Mode 关闭之后 bot 就能获取到群聊的全部信息,不然的话就只能获取到命令和 @ 信息。
此外机器人的头像等资料,也可以在这里设置。然后有的机器人在输入 /
之后会自动提示所有可用的命令,也是通过 BotFather 来设置的。
准备服务器
现在有帐号了,那肯定需要一台服务器来收发消息。然后有两种办法获取消息,一种是 getUpdate 接口,另一种则是使用 Webhook。后者显而易见的在时效性上更有优势,而前者可以在本地开发调试的情况使用,减少反复部署的时间浪费。使用 Webhook 的话,Telegram 要求服务器启用 HTTPS 来保证通讯安全。
Telegram Bots API
到这里就没有什么要说的了,文档: https://core.telegram.org/bots/api
嘛,当然使用一些现有的 Bot 库会事半功倍,少码好多代码。