电报 bot 的使用
李二花 / 2006-10-26
分类: 赤壁赋 / 标签: 苏轼 / 字数: 1142
关键词:电报
, bot
如何申请一个 bot,
电报的 bot 申请很简单,按照官网一步步来就行,地址.
申请好了之后去看看 API 文档.
如果看完文档还有迷惑,我写几个 demo 看完马上就可以明白了
例子 1 获取个人信息
method
: GET
path
: https://api.telegram.org/bot[token]/getMe
解释:其中 [token] 就是在生成 bot 后 botFather 给你的,替换掉 [token] 就可以,格式类似于 A:B
然后最后的 getMe
是 METHOD_NAME
,就是请求的方法的名字
上面这个请求执行后,得到的结果如下, 这个 getMe 就是获得自己的信息的接口
{
"ok": true,
"result": {
"id": "1791xxx819",
"is_bot": true,
"first_name": "滴答滴",
"username": "didadidadidadibot",
"can_join_groups": true,
"can_read_all_group_messages": false,
"supports_inline_queries": false
}
}
除了这个 getMe
的方法外,还有好多其他方法,看上面我留的 API 文档即可,比如下图:
例子 2 获取聊天 ID
如何获取 chat_id, 然后用这个 ID 通过 API 给自己发送消息
- Install Telegram,
- Create a Bot using the official telegram BotFather (it has a verified symbol next to it when you add it as a contact),
- Follow the prompts, and finally copy it’s HTTP API Token,
- Create a Group,
- Add the Bot to it,
- Send the Group at least 1 message.
- Use this API https://api.telegram.org/botXXX:YYYYY/getUpdates to get chat_id
method
: GET
path
: https://api.telegram.org/bot<token>/getUpdates
返回值大概是下面的样子(有删减):
{
"ok": true,
"result": [
{
"update_id": 331805741,
"message": {
"message_id": 19,
"from": {
"id": "732xxx366",
"is_bot": false,
"first_name": "double flower",
"language_code": "zh-hans"
},
"chat": {
"id": "732XXX366",
"first_name": "double flower",
"type": "private"
},
"date": 1618401351,
"text": "just close your eyes"
}
},
......
]
}
例子 3 HTTP 发送聊天信息
method
: POST
path
: https://api.telegram.org/bot<token>/sendMessage
data
:
{
"chat_id": 702000360,
"text": "这是一个测试文档123"
}
发送后,就会收到你这个 bot 给你发的信息,换成其他的 chat_id 就会发给其他的人
如何跟 Alfred 关联起来使用
关联 Alfred 也很简单,我之前写的那个 todo 的 workflow 提到过我每当我有即时想法时为了不打断工作流,就呼出 Alfred 框写下我想要的东西,其实也可以很好的跟电报的 bot 结合起来,直接上例子和脚本
具体流程就是,我开始用了一个 input,当我呼出 Alfred 之后,输入 lala
这个关键词就会触发这个 workflow,然后空格后面输入想记录的东西,回车后会出发执行后面的 shell 脚本,而后面的脚本做的事情就是把输入的内容发送到我的电报里,当然也可以发送到任何其他人的电报里,只要你的 shell 脚本写好了命令就好
脚本内容如下,其实就是执行放在我电脑上的某个 shell 脚本,其实这里最好是把脚本直接在 Alfred 执行,不然一旦换电脑,路径会发生变化,到时候还要改路径
/Users/lifupeng/Documents/personal/jupiter_quiver/Quiver.todo/sendMsg.sh $1
sendMsg.sh 的内容
query=$1
export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7891
curl --location --request POST 'https://api.telegram.org/bot[token]/sendMessage' \
--header 'Content-Type: application/json' \
--data "{\"chat_id\": "要发送信息的ID",\"text\": \"${query}\"}"
~
电报需要搭梯子才可以发送,因此我首先设置了 https_proxy 的代理,而具体的代理在我电脑上已经配置了,这块有时间看这里
然后,每次我呼出 Alfred,然后输入 lala
输入空格 + 我想记录和发送的内容,回车,我的或者需要收到信息的那个电报用户就能收到我发的信息
当然,这只是一个简单的 demo 演示,具体我们还可以使用 python 脚本或者 PHP 脚本去实现更复杂的逻辑,达到更有意思的工作流,就看生活中的实际场景了。
其他
之前的想法:
最近打算把电报的 bot 集成到 Alfred 的 workflow 和 iPhone 的快捷指令中去,挖个坑,待填
再引入一个 mq 做异步任务,我觉得可以搞好多事情,正好利用下阿里那台机器,具体可以和什么结合有待思考
一些参考记录: - how to get chat id - use python - curl slowly question