官方文档
创建机器人在telegram中我们可以通过和一个名为BotFather的机器人交互来申请我们自己的机器人,具体步骤如下
添加BotFather为好友
点击这里添加botfather
打开和botfather的对话框发送 /newbot
这一步过后botfather会提示你输入你要创建的机器人的名字,这个名字可以随意,是我们称呼它的名字
设置自定义机器人的名字(这个名字不同于上一步的名字,这个名字是唯一的)结尾必须是_bot或者Bot,不能包含中文, 标点符号
如果上一步执行成功那么botfather会返回该机器人的token,大概长这样
123456789:ABCDEfghiJK4314daDSadSa7记住这个token,到这里机器人就创建好了
将机器人添加到群组里进入机器人信息页面,点击更多,点击添加到群组,选择一个群组即可
获取群组chat_id通常来说我们都需要让机器人在一个群组里工作,所以首先我们需要将机器人添加到我们指定的群组,在群组里发送随意消息并@这个机器人,比如
hello @your_bot然后浏览器打开这个链接,注意替换为你的token
https://api.telegram.org/bot<token>/getUpdates你看到的是一个json,格式如下
{ "ok": true, "result": [ { "update_id": 414941268, "message": { ... }, "chat": { "id": -465512321, ... }, ... } ] }从中找到chat.id这就是当前群组的id,以后发消息都是发到这个id.
机器人发送请求 请求接口telegram发送消息的方式类似与钉钉机器人,都是向一个api发送http请求,而且对于同一个APItelegram支持GET和POST两种请求方式.请求的api格式如下
https://api.telegram.org/bot<token>/<method>其中token为你的机器人token,method为telegram给定的方法,在获取群组chat_id那一步就使用了telegram的其中一个方法(getUpdates),其他方法后面会介绍
携带参数请求api时有些方法需要携带参数,telegram支持的传参方式/类型如下
URL查询参数
application/x-www-form-urlencoded
application/json
multipart/form-data(上传文件使用这个content-type)
获取响应对于每次请求telegram都会有一个响应,响应的内容是一个json,格式如下
{ "ok": true, "result": ... }其中返回的result可以是telegram定义的对象或者是对象的列表
telegram对象telegram机器人的几乎所有操作都是一个一个对象的操作。
telegram定义了许多场景下的对象,,这里举例一些常见的
Update该对象表示传入的更新,比如接收到用户发来的新消息,就会获得新的更新
Field Type Descriptionupdate_id Integer 更新的唯一标识符。 更新标识符从某个正数开始,并依次增加。 如果您使用的是Webhooks,则此ID变得尤为方便,因为它使您可以忽略重复的更新或在错误的情况下恢复正确的更新顺序。 如果至少有一个星期没有新更新,则将随机选择下一个更新的标识符,而不是顺序选择。
message 可选的。任何形式的新传入消息-文本,照片,贴纸等。
edited_message 可选的。机器人已知并已编辑的消息的新版本
channel_post 可选的。任何形式的新传入频道帖子-文字,照片,贴纸等。
edited_channel_post 可选的。机器人已知并已编辑的频道发布的新版本
inline_query 可选的。新的传入内联查询
chosen_inline_result 可选的。用户选择并发送给其聊天伙伴的内联查询的结果。请参阅收集反馈的文档,以获取有关如何为您的机器人启用这些更新的详细信息。
callback_query 可选的。新传入的回调查询
shipping_query 可选的。新的收货查询。仅适用于价格灵活的发票
pre_checkout_query 可选的。新的传入预结帐查询。包含有关结帐的完整信息
poll 可选的。新的投票状态。机器人仅接收有关僵尸程序发送的有关已停止的投票和投票的更新
poll_answer 可选的。用户在非匿名调查中更改了答案。僵尸程序仅在由僵尸程序本身发送的民意调查中才能获得新的选票。
任何给定的更新中最多只能存在一个可选参数。
User