Python利用Telegram机器人搭建消息提醒

云舒
云舒
发布时间:2026-10-15| 5人浏览过
原创

本文介绍如何利用Python和Telegram Bot快速搭建系统消息提醒服务。通过BotFather申请机器人获取Token,创建频道并邀请机器人,调用sendMessage接口实现自动化通知。结合Flask框架,在系统报错时即时发送错误信息至微信,解决开发者对系统运行状态感知滞后的痛点。

近期频繁使用Telegram平台。

对于开发者而言,Telegram Bot最具吸引力的功能在于其可编程性,允许用户创建机器人执行特定任务。就当前应用场景,通过机器人实现消息提醒功能尤为实用。作为开发人员,实时掌握网站运行状态至关重要,而系统报错时的即时通知往往是亟待解决的关键痛点。

国内已有部分现成解决方案,例如接入企业微信或钉钉等即时通讯工具,但此类方案接入流程较为繁琐,通常需要先注册企业账号。此外,也存在通过第三方平台公众号进行提醒的服务。

此前采用的短信提醒方式因个人查看短信习惯缺失而效果不佳,短信额度耗尽后该方案被弃用。随后尝试通过邮件方式解决,利用Sendcloud提供的每日免费邮件发送额度,将邮件提醒集成至系统中并发送至QQ邮箱。鉴于QQ邮箱支持关联微信,当系统发生报错时,可通过微信第一时间接收消息提醒。

近期发现Telegram机器人同样是一个可行的备选方案,其搭建过程快速,仅需10分钟即可完成配置。

申请机器人

创建机器人的过程十分简便。

直接向官方机器人BotFather发起申请,搜索并添加“BotFather”,随后向其发送指令/newbot。

此时,BotFather会提示为机器人设置用户名,该用户名必须以_bot作为后缀结尾。

若用户名已被占用,系统会提示更换名称。申请成功后,BotFather将下发一个Token。

该Token是后续调用API的凭证,务必妥善保管。因为任何持有该Token的人均可利用你的机器人操作API;若Token发生泄露,可通过BotFather更新Token。

验证Token

可使用以下接口验证该Token是否有效。

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

请注意,URL中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
  }
}

发送消息

  • 在发送消息前,需先创建一个频道用于接收消息。
  • 为频道设置唯一的频道账号标识。
  • 将机器人添加至该频道,只有加入频道后,机器人才能在频道内发送消息。

调用发送消息API接口。

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"
  }
}

若接口验证无误,即可利用相应的Python库将功能集成至你的系统中。

以Flask框架为例,以下为核心实现代码。

# view.py
@api.route("/error")
def exception_test():
    s = 1/0
    return 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 = app
        self._session = requests.session()
        self.token = None
        if app is not None:
            self.init_app(app)

    def init_app(self, app):
        self.app = app
        self.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路径,此时Telegram将收到相应的消息提醒。

至此,关于利用Python和Telegram机器人搭建消息提醒的介绍已完成。如需了解更多Python与Telegram消息提醒相关内容,建议查阅本站过往文章或继续浏览后续相关文章,感谢支持。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。