由于群里面的小伙伴的需要,刚好我也想玩玩,就答应了帮他做一个Telegram Bot(下简称TgBot),用来统计和维护我们群里面的一些信息。接下来,我会用一点时间,把整个流程给写出来,做成一个系列,方便以后大家的查阅。网络上也有很多库可以使用,本着学习的态度,我还是觉得需要造轮子。

先说一下需要准备的东西:

  • Tg的账号
  • 从BotFather申请的Bot的Token
  • 流畅的网络能访问Tg的Api
  • 模拟请求神器Postman的简单使用
  • 高级语言,Python,Java,Kotlin,Ruby,C++都可以,选一个你熟悉的就好
  • 能够访问TgAPI的服务器

这一篇文章,我们先来看看如何通过Postman调用TgAPI来获取TgBot接收和发送消息。

申请Bot

在你的Tg客户端中搜索BotFather,看名字就知道是所有Bot的father。在聊天窗口中输入*/newbot获取一个新的bot,然后给bot起一个用户名和帐号名「帐号名需要以Bot结尾」。然后输入/token*,就得到了关于这个Bot的Token,调用API的时候每一次都需要这个Token,来标识唯一的Bot。

You can use this token to access HTTP API:
429562299:your_bot_token

至此申请环节结束,没有微信公众号那么变态一堆信息,还有审核。

API调用

拿到上面的Token,就可以访问Telegram的API。看着会有点多,实际上我们这一次开发简单的Bot,所需要用到的API很少很简单。它的API请求支持GET&POST方法,请求的URL为https://api.telegram.org/bot+yourBotToken/METHOD_NAME,返回的结果都在一个Json结构体里面。

可以简单的测试一下,将上面的token换成你自己的,同时METHOD_NAME改成getMe。在Postman或者浏览器里面输入这个URL,你就会得到一个Json结构体。

{
    "ok": true,
    "result": {
        "id": xxxx,
        "is_bot": true,
        "first_name": "your bot nickname",
        "username": "your bot username"
    }
}

看到上面的这个Json中的信息和你刚刚输入的一样的话,就证明这一次请求顺利完成了。

下面说下会用到的API「替换掉上面URL中的METHOD_NAME」:

  • getUpdates:这个接口会返回所有你的Bot接收到的消息。这里面需要注意:
    • Bot是没法发起一个初始化的对话的,其实原因很简单,避免有人通过API操作Bot发送垃圾消息
    • 这个接口的响应结果,服务器端只给你保存24小时,因此你今天调用的结果是没有昨天的内容的。当然后面我们可以将这一堆数据写入到自己的数据库就好了
  • sendMessage:这个接口需要接收两个必须的参数chat_idtext。chat_id可以是一个群的id也可以是个人帐号的id,从上面的getUpdates接口中的返回值中可以得到。text就是需要发送的消息内容。

OK,很简单,基本就这样完成了。

下一篇,我会写一段简单的Python来帮助我们得到和处理这些API返回的数据。