推荐好文:
①程序员用Python爬虫做副业半个月就赚了3W
②程序员别瞎学,这几门语言要被淘汰了…

对开发者来说,Telgram最吸引人的地方估计是 Telgram bot,你可以在建个机器人来做些事情。不过目前对我来说,最有用的一个功能是通过机器人来做消息提醒。作为开发者,我想实时知道网站的运行情况,系统报错时能即时提醒是一个痛点问题。

当然,在国内有些一些现成的解决方案,比如接入企业微信或者钉钉之类的聊天工具中,就是接入麻烦,你还的先弄个企业。也有一些第三方平台通过公众号来做提醒的。

我之前的做法是通过发短信的方式进行提醒,但是我根本就没有去看短信的习惯。短信用完了这种方案就放弃了。后来,我又想到一个新的办法,就是用邮件方式,sendcloud每天有一定免费限额的邮件发送量。 将邮件提醒集成到系统,给QQ邮箱发送消息,因为QQ邮箱有一个好处是可以关联到微信,这样每当有系统有报错时都可以在第一时间收到微信的消息提醒。

近来发现Telgram的机器人也是一个备选方案,10分钟就可以快速的搭建一个出来。

申请机器人

搞一个机器人也很简单。

直接向【机器人爸爸】申请一个机器人,搜 “BotFather” ,然后给他发送一条消息 /newbot

这时候他会提示你给机器人设置一个用户名,必须以 _bot 结尾

如果遇到重复的名字会提示你换个名字。申请成功后,他会给你下发一个token。

这个token就是你后面调用api的凭证,所以要保管好,因为任何人只要拿到这个token就可以利用你的机器人操作api,如果token泄漏了可以更新token。

验证token

可以用下面的接口来验证该token是否可用

https://api.telegram.org/bot{token}/getMe

注意,token前面有个固定的 bot 单词,如果你不写会提示404错误的。

正常会返回成功消息

{"ok": true,"result": {"id": 12345678,"is_bot": true,"first_name": "xxxx","username": "xxxxxx","can_join_groups": true,"can_read_all_group_messages": false,"supports_inline_queries": false}
}

发消息

  1. 发消息前我们先创建一个频道专门用来接收消息
  2. 给频道设置唯一频道帐号
  3. 把机器人拉到频道里面,机器人才可以在里面发消息

调用发送消息接口

https://api.telegram.org/bot{token}/sendMessage?text=hello&chat_id=@频道id

  • text 是你要发送的消息
  • chat_id 是频道ID。

返回数据:

{"ok": true,"result": {"message_id": 4,"sender_chat": {"id": -110201250852,"title": "日志消息","username": "频道id","type": "channel"},"chat": {"id": -110201250852,"title": "日志消息","username": "频道id","type": "channel"},"date": 1654791886,"text": "hello"}
}

接口验证没问题你就可以用相应的库集成进你的系统啦

我们以flask为例,以下为核心代码

# view.py
@api.route("/error")
def exception_test():s = 1/0return success()# app.py
@app.errorhandler(Exception)
def server_error(e):app.logger.error(f"内部错误{str(e)}", exc_info=True)if app.config.get("ENV") in ("production", 'development', 'local'):tb = traceback.format_exc()telegram.send_message(f"错误信息:{str(e)} \n堆栈信息:{tb}", chat_id=app.config.get("TELEGRAM_CHAT_ID"))return error(code=500, http_code=500, msg="内部错误")# telgram.py
class Telegram:def __init__(self, app=None):self.app = appself._session = requests.session()self.token = Noneif app is not None:self.init_app(app)def init_app(self, app):self.app = appself.token = app.config.get("TELEGRAM_BOT_TOKEN")def send_message(self, text, chat_id):response = self._session.get(f"https://api.telegram.org/bot{self.token}/sendMessage?text={text}&chat_id=@{chat_id}")

启动程序,访问 localhost:5000/error, 这时候telgram就会收到消息提醒

全文完。

在Python应用中Telegram 机器人搭建消息提醒相关推荐

  1. python自动推送消息_使用Python制作自动推送微信消息提醒的备忘录功能

    日常工作生活中,事情一多,就会忘记一些该做未做的事情.即使有时候把事情记录在了小本本上或者手机.电脑端备忘录上,也总会有查看不及时,导致错过的尴尬.如果有一款小工具,可以及时提醒,而不用再主动去查备忘 ...

  2. python 使用钉钉机器人发送消息至钉钉

    如果你在使用钉钉,并且经常需要发送某些消息到钉钉群中,例如在监控某些数据,当出现异常的时候,及时发送消息通知钉钉群:或者在完成某些操作,发送消息到钉钉群中,那么我们可以使用钉钉机器人,实现自动化信息同 ...

  3. Python用钉钉机器人发送消息并艾特多人

    继续水文章.今天主要是吐槽一下钉钉的接口文档 前几天碰见个需求: 从jira接口查出每日未完成的任务 用钉钉机器人把任务发送到钉钉工作群里,并标注是谁的任务.任务标题 发送时,艾特对应的人员 给每个人 ...

  4. 钉钉机器人怎么设置自动回复_项目部署成功后触发钉钉机器人发送消息提醒——入门配置...

    钉钉建好一个群 打开群设置, 找到群机器人 添加一个你想要的机器人 可以使用自定义 自定义机器人可以自定义头像,名字,生成一个webhook(https post的请求地址) 到这里, 钉钉机器人设置 ...

  5. 利用python进行企业微信机器人自动发送消息

    def test_004_robot(self):headers = {"Content-Type": "text/plain"}s="卖品,打印码: ...

  6. telegram 机器人_学习使用Python在Telegram中构建您的第一个机器人

    telegram 机器人 Imagine this, there is a message bot that will send you a random cute dog image wheneve ...

  7. telegram自动发信息_zabbix调用telegram机器人发送报警消息

    众所周知,telegram的机器人还是非常好用,而且是免费的,所以这就给监控系统发送报警消息提供了一个非常好的渠道,相信很多朋友已经垂涎三尺了,所以废话不多说,直奔主题吧! zabbix系统基础配置部 ...

  8. 【Re:从零开始的QQ机器人搭建】——基于go-cqhttp和python

    [Re:从零开始的QQ机器人搭建]-- 基于go-cqhttp 警告:小心智械危机( 前言 之前酷Q用的好好的,谁知道刚打完工会战不到2天tx就封了大部分机器人.所幸小部分有生力量保留了下来,必可活用 ...

  9. python之钉钉机器人自动发消息——傻瓜式教程

    文章目录 python之钉钉机器人自动发消息--傻瓜式教程 前言 钉钉创建机器人 主要流程如下: 细节流程如下 python连接dingtalk 发送MarkDown格式消息 源码展示 效果展示 代码 ...

最新文章

  1. java vs .net
  2. 如何学习SVM?怎么改进实现SVM算法程序?答案来了
  3. lintcode:Unique Characters 判断字符串是否没有重复字符
  4. Router Modules模块化
  5. java jpopupmenu 无法显示_java – 从JButton显示/隐藏JPopupMenu; FocusListener无法正常工作?...
  6. python速成一小时_Python学习|一小时快速入门python(一)
  7. Spring Boot 2.x多线程--使用@Async开启多线程使用示例
  8. mac 配置/etc/profile重启后不生效
  9. Spring MVC+Spring+Mybatis+MySQL(IDEA)入门框架搭建
  10. SpringMVC 全局异常处理的简单应用
  11. Oracle Create Profile
  12. F7-Nginx虚拟主机Server
  13. 如何处理Oracle中TEMP表空间满的问题(转载)
  14. 【51/STM32】详解控制系统中的继电器
  15. 圣思园 java se_圣思园JavaSE视频笔记
  16. 轻松搞定应用启动黑白屏
  17. Proftpd快速搭建FTP服务器
  18. 014基于深度学习的脑电癫痫自动检测系统-2018(300引用)
  19. 软件项目报价术语总结(功能点计数元素ILF、EIF、IE、EO、EQ)
  20. Delaunay三角剖分及matlab实例

热门文章

  1. mysql提权软件后门_Mysql提权留后门
  2. ArcMap 属性连接和空间连接用法
  3. 一招判断云主机IP是不是原生IP
  4. 我是主考官__博文(作者著有《Java程序员,上班那点事儿》)
  5. Java中对象的六种可触及状态
  6. HCIE-RS论述题-MPLS LDB
  7. iphone怎么连接itunes相关解锁教程
  8. PostgreSQL DBA(81) - Locks(FOR UPDATE SKIP LOCKED)
  9. 聚类分析(K-means、系统聚类和二阶聚类)的原理、实例及在SPSS中的实现(一)
  10. 一文说透企业风险管理的三大要素分别是什么