GitHub: zry98/faas-telegram-push-bot

由于 Server酱 前段时间服务不稳定(且考虑到隐私问题),糊了一个简单的 FaaS Telegram Push BOT 来推送一些程序的运行通知

目前跑在 Google Cloud Platform 的 Cloud Functions 上,GCP 提供了高达 200万次执行/月免费额度

源码

# requirements: python-telegram-bot
import os
import binascii
from base64 import b64decode
import telegram


BOT_TOKEN = os.environ['BOT_TOKEN']
USER_ID = int(os.environ['USER_ID'])


def main(request):
    bot = telegram.Bot(token=BOT_TOKEN)

    if request.form and 'msg' in request.form:
        args = request.form
    elif request.args and 'msg' in request.args:
        args = request.args
    else:
        return 'null'

    if 'b64' in args and (args.get('b64') == 'true' or args.get('b64') == '1'):
        try:
            message = b64decode(args.get('msg')).decode('utf-8')
        except binascii.Error:
            message = 'An error occurred while decoding the message'
    else:
        message = args.get('msg')

    message = message if message else '(Blank message)'

    bot.send_message(chat_id=USER_ID, text=message)

申请 Telegram 机器人

官方教程:https://core.telegram.org/bots#6-botfather

创建 GCP 云端函数

前往 https://console.cloud.google.com/functions/,创建一个云端函数

如图,将 “运行时” 改为 Python 3.7,修改 main.py 的代码,并在 requirements.txt 中添加 “python-telegram-bot”

将 “要执行的函数” 改为 main,展开高级选项,在环境变量中分别添加 bot 的 TOKEN 和自己 Telegram 账号的数字 ID (或直接将其定义在源码中)

之后点击创建按钮,等待函数部署完成就可以使用了

使用

URL 为生成的触发器网址,如 “https://us-central1-test-123456.cloudfunctions.net/pushbot”

支持 GET 或 POST 请求,两者同时存在时 POST 请求将被优先使用

参数 msg 为消息正文

参数 b64 为 base64 编码开关,当其值为 “true“ 或 ”1“ 时, msg 参数的值需为经过 base64 编码的消息正文

示例:

GET https://us-central1-test-123456.cloudfunctions.net/pushbot?msg=test

GET https://us-central1-test-123456.cloudfunctions.net/pushbot?b64=true&msg=dGVzdA%3D%3D

分类: Python

发表评论

电子邮件地址不会被公开。 必填项已用*标注