flyzy博客
分享便宜VPS与网络优惠
搬瓦工

【教程】自建电报机器人/telegram bot实现消息推送

自己立的flag要自己实现,具体flag请移步https://www.hostloc.com/thread-803987-1-1.html

老规矩先引流 https://pa.ci/119.html

之前一直用server酱配合微信实现消息推送,但是最近微信开始收紧,后期有无法使用的可能。于是在找替代品,常见的就是自建了,比如iOS平台使用bark,安卓上的gotify,更小众的有小米用自带的mipush等。但是用起来都需要自建服务,或者面临复杂的编写环境。一个合适的替代品是telegram bot,支持多种语言,既操作简便又功能众多尤其是在python平台上,如果只想达到类似server酱的功能,那直接post即可。

——————-

以下使用python3环境为例,保姆级教程,从bot的申请到python脚本的systemctl配置都有。

申请telegram bot

    1. 打开bot的生成链接 https://t.me/botfather (生成bot的地方叫bot之父而不是之母,可能预示了设计者是个俄罗斯人)。
    2. 点击 /newbot – create a new bot 生成新一个的bot,系统会让你给它取一个名字,这里可以随便输入,反正方便记就可以了。
    3. 系统会再次让你取一个名字并输入,现在的名字必须以bot结尾,不可以和其他任何bot重名。这一步的名字类似于身份证号码,而前一布的名字类似于身份证上面的名字。身份证上的名字可以重复,但是身份证号码不允许重复。
    4. 一旦你输入的bot名字可用,系统会生成一个token给你,类似于1689581149:AAGYVVjEHsaNjsnT8eQpWyshwr2o4PqU7u8,请务必保存好此token并且不泄露,这是唯一的用户凭证。
   
此时,你拥有了一个bot,但是还无法使用,因为你知道它,它不知道你。这时候打开 https://t.me/iamthebot 这个链接,注意iamthebot为你刚才新建的bot的名字!点击/start进入对话框,发送@userinfobot后并点击它。userinfobot的对话中,点击或者输入/start,你将获取一个Id/chat_id,具体表现为一串数字,比如387980691。

至此,电报的机器人已经申请完成,你获得了机器人的bot名字,一个token,还有一个chat_id

python3程序实现消息推送

    1. 电报机器人的功能众多,所以配置起来很复杂,好在我们只需要使用消息推送,所以选择使用python3和pyTelegramBotAPI来实现,程序写起来会很简单。
    2. 安装pyTelegramBotAPI方式为pip3 install pyTelegramBotAPI,如果提示没有pip或者pip3,请自行安装,每个linux系统可能都会有少许的差异,具体请百度/谷歌/必应/问别人都行,反正装上去就行了。
   3.  实例程序如下,其中TOKEN为你申请得到的token,tb.send_message中的数字为从userinfobot那里拿到的ID/chat_id,text为想要推送的消息。
import telebot TOKEN = ‘1689581149:AAGYVVjEHsaNjsnT8eQpWyshwr2o4PqU7u8’ tb = telebot.TeleBot(TOKEN) text = “I am the first telegram bot notification” tb.send_message(387980691, text) 复制代码

至此,运行这个python3程序,一个简单的消息推送已经实现了,你会在和这个机器人的对话框中收到机器人发送给你的消息。

电报机器人的实际使用案例

在树莓派上装了一个光敏传感器,用来判断是否有人开灯。每10秒检查一次光敏传感器的状态,如果发生开灯或者关灯动作,那就通过电报器人发送消息给我。程序依旧是python3和pyTelegramBotAPI配合,引入了GPIO读取光敏传感器反馈的状态,同时使用systemctl实现开机自启。能看到这一步或者有类似需求的,大概多少懂点程序和linux基础,我直接放出源码以供参考。

以下为主程序,为GPIO读取光敏传感器状态,以及电报机器人的消息推送部分。
#!/usr/bin/env python3 import RPi.GPIO as GPIO import telebot import time GPIO.setmode(GPIO.BCM) GPIO.setup(17, GPIO.IN) TOKEN = ‘1689581149:AAGYVVjEHsaNjsnT8eQpWyshwr2o4PqU7u8’ tb = telebot.TeleBot(TOKEN) # 0 is OFF VALUE = 0 try:     while True:         nowtime=time.strftime(‘%Y-%m-%d %H:%M:%S’,time.localtime(time.time()))         if GPIO.input(17):             if VALUE == 0:                 pass             else:                 VALUE = 0                 text = “OFF! ” + nowtime                 tb.send_message(387980691, text)         else:             if VALUE == 1:                 pass             else:                 VALUE = 1                 text = “ON! ” + nowtime                 tb.send_message(387980691, text)         time.sleep #此处有sleep的,但是loc把它这行代码当args屏蔽了,具体内容可以看博客 except:     text = “ERROR!”     tb.send_message(387980691, text) 复制代码

以下为systemctl的service配置文件,我习惯性放入/etc/systemd/system中,并将上述python程序放入/etc/lightelebot文件夹中。
[Unit] Description=Light Sensor Service After=multi-user.target [Service] WorkingDirectory=/etc/lightelebot User=root Type=idle ExecStart=/usr/bin/python3 /etc/lightelebot/lightelebot.py Restart=always [Install] WantedBy=multi-user.target 复制代码

贵州省网友说:给大佬顶帖

河北省网友说:马克了

台湾省网友说:支持大佬

安徽省网友说:顶技术贴!

云南省网友说:大佬厉害,学习学习

青海省网友说:感谢分享 感谢填坑 学习了

陕西省网友说:防盗用的么?

青海省网友说:学习

吉林省网友说:token保存好就不会被盗用,和server酱类似的操作

_______
更新,误解了意思。这个光敏传感器是用来记录生活作息的,日常折腾点东西。

安徽省网友说:tg 推送万般好 就是一点让我很纠结 tg的中文搜索。。。
推送的消息 以后想检索基本不可用

不知道lz有无这方面的需求和解决方案

河北省网友说:mark

江西省网友说:用英文

云南省网友说:mark一下,感谢分享!

云南省网友说:厉害,感谢分享!

安徽省网友说:大佬牛皮啊 哈哈!

河南省网友说:感谢分享

四川省网友说:他的意思是这个项目光感传感器是防盗用的吗?

四川省网友说:好吧,我没明白意思。感谢提醒,我企业修改一下回复。

黑龙江省网友说:github搜索telegram_search,有个项目是中文搜索,我自己用了感觉挺好用的,redis内存数据库加上jieba中文拆词,稳定高效。

安徽省网友说:mack

江西省网友说:這種帖子對主機論壇網友有很大的好處,應與表揚

湖北省网友说:支持大佬,mark一下

湖北省网友说:必须mark

云南省网友说:技术贴,mark备用

赞(0) 打赏
关注我们
未经允许不得转载:flyzy博客 » 【教程】自建电报机器人/telegram bot实现消息推送
分享到: 更多 (0)

这是一种鼓励

支付宝扫一扫打赏

微信扫一扫打赏