通过 telegram 来发送消息到手机 (只需两行代码)

什么是telegram?

telegram是一款即时通讯软件。目前在国外比较流行,尤其是whatsapp爆出漏洞之后,很多人开始转战telegram。我从四五年前开始就使用telegram的机器人发送消息到手机上。总体来说是非常可靠的。不过这款软件目前在国内是无法直接使用,必须结合科学上网使用。

所以本文应该对国外地区的朋友比较有意义。好了,言归正传。

telegrem有什么特点?

  • 提供手机和网页客户端
  • 官方提供https api (发送消息最简单的方式,只需要一行代码。本文涉及)
  • 官方提供python库

跟微信相比如何?

微信最大的缺点就是,发送消息到手机非常麻烦,除非注册企业微信,没有官方的渠道(腾讯官方其实的是反对使用程序操作微信的)。目前github上面有一些基于python的,可以收发微信消息的库,底层都是基于微信网页版的。这个用起来会有风险,可能会导致微信号被封。我当年就是因为用自己的账号玩微信机器人而导致直到现在再也无法使用网页版的微信了。。。

telegram的最大的缺点就是,前面提到的无法在国内直接使用

使用 telegram的https api 来发送消息

主要步骤:

  1. 用手机注册一个telegram账号
  2. 创建一个bot(python到时候用这个bot来发送消息)
  3. 找到手机端的聊天id (chatid)
  4. 使用两行代码就可以发送消息了

1. 手机注册一个telegram账号

注册账号跟其他的聊天的软件没有什么区别,应用到手机上然后根据引导一步一步注册。

2. 创建聊天机器人

在telegram里面创建聊天机器人是通过聊天形式来创建的,找到一个叫BotFather的联系人,通过跟它发消息来实现。其实BotFather也是个机器人.

输入这个命令创建机器人

/newbot

然后需要给机器人取个名字:

我这里取的名字是new-test-bot(这个名字可以随便取)

接下来要你给机器人取个用户名(username):

我这里取的名字是newtestquantbot(这个名字必须是系统里面唯一的,必须以bot结尾)

然后一切顺利的话,系统会创建好一个机器人(bot),并给你一长串的字符token,这个token就是用来控制机器人的,一定要保管好,不要泄漏。

有了token就可以控制机器人给手机发消息了

3. 找到手机端的聊天id (chatid

上面我们有了token,通过token我们的机器人发消息了,接下来我们得知道发给谁不是?在telegram里面每一个聊天对象都有一个ID,我们的手机端则不例外,接下来我们的任务就是要找到我们手机上面的聊天id(chatid)。

在浏览器中输入获取机器人消息的网址:https://api.telegram.org/bot你的token/getUpdates

比token是:”dfa33:393ffa3faefpki”,网址就是:https://api.telegram.org/botdfa33:393ffa3faefpki/getUpdates

注意bottoken之间是没有空格的

上面我的机器人获取的消息为空,当然是空的,因为至今为止还没有任何人给机器人发过消息。

接下来用我们的手机客户端给机器人发条消息,然后在网页上刷新机器人的消息列表试试。

  • 在左边的框里面搜索newtestquantbot找到我们刚刚创建的机器人
  • 点击选择机器人
  • 点击“start”开始聊天,或者尝试发送一条“测试”消息。


4. 发送消息到手机

下面是代码,总共五行,如果将tokenchat_id硬编码到url中,去掉最后那一行输出。就只剩两行了。

1
2
3
4
5
import requests
token = "1876xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2NhVRI" # 替换成你自己的token
chat_id = 130000006 # 替换成你自己的chat_id
r = requests.post(f'https://api.telegram.org/bot{token}/sendMessage', json={"chat_id": chat_id, "text": "【机器人】测试消息"})
print(r.json())

总结

除了刚刚开始的时候生成token和找到chat_id略微花费点时间外,telegram用起来还是很方便的。这里介绍的程序只能发送消息到手机上。如果使用telegram官方的库,程序还可以用来接收消息,这样子就可以通过手机发送消息来控制程序了。