一.前言

青龙面板挂活动,那就少不了线报,尤其是JD系活动的环境变量。通常线报都是在TG上发布的,由于网络限制的原因,获取也很不方便。市面上也有TG线报系统,不过大多都是付费的,我们完全可以自己开发一个定制的线报系统,监控活动和自动更新环境变量执行任务,解放双手,无需时刻守护。

二.原理介绍

核心是TDLib,TG官方提供了TG数据库库(或简称为 TDLib),这是一种供第三方开发人员使用的工具,可以轻松构建快速、安全且功能丰富的 TG应用程序。

TDLib 负责所有网络实现细节、加密本地数据存储,以便开发人员可以将更多时间用于设计响应式界面和精美动画。

TDLib 支持所有 TG功能,并使在任何平台上开发 TG应用程序变得轻而易举。它可以在 Android、iOS、Windows、macOS、Linux 和几乎任何其他系统上使用。该库是开源的,几乎与任何编程语言兼容。

简而言之,就是利用了TDLib开发一个TG客户端来接收消息,然后提取我们需要的内容

三.系统开发

TDLib支持的编程语言很多,为了开发和部署方便,这里选择了Python语言,同时官方也提供了Python+TDLib环境的Docker容器,我们只需要安装好容器,编写我们业务逻辑代码就行。

1.安装环境

宝塔面板——终端,拉取官方python-telegram镜像并建立容器,容器默认命名为py-tg,最大内存为512MB,不映射端口和目录,无特殊要求,输入如下命令即可:

docker run -dit --name py-tg -m 512MB akhmetov/python-telegram:latest

为了方便操作,我们采用宝塔面板自带的Docker模块进行接下来的操作,宝塔面板——Docker,可以看到刚创建的py-tg容器

至此,环境已搭建完毕。

2.业务代码

利用python-telegram的接口,我们可以实现TG客户端接收消息在这里只实现自动更新环境变量的功能。

(1)在宝塔面板——Docker中打开py-tg容器的目录,可看到目录结构如下:

点击进入app目录,里面有个examples文件夹,这是官方提供的例子我们不管,接下来在app目录下创建三个文件:ql.pyconfig.jsonmain.py

(2)先编写青龙面板的环境变量提取和导入的逻辑代码,利用到了青龙面板的OpenApi,新建文件,命名为ql.py,代码如下:

import re
import requests
from json import dumps as jsonDumpsclass QL:def __init__(self, address: str, id: str, secret: str) -> None:"""初始化"""self.address = addressself.id = idself.secret = secretself.valid = Trueself.login()def handleMessage(self, update: dict) -> None:"""处理消息"""try:text = update["message"]["content"]["text"]["text"]except:returnenvs = re.findall("export \w+=\"[^\"]+\"", text)if(len(envs) < 1):returnself.log(f"监测到{len(envs)}个环境变量")targets = []for env in envs:name = env.split(" ", 1)[1].split("=", 1)[0]value = env.split(" ", 1)[1].split("=", 1)[1][1:-1]targets.append({"name": name, "value": value})self.addEnvs(targets)def log(self, content: str) -> None:"""日志 这里只简单打印"""print(content)def login(self) -> None:"""登录"""url = f"{self.address}/open/auth/token?client_id={self.id}&client_secret={self.secret}"try:rjson = requests.get(url).json()if(rjson['code'] == 200):self.auth = f"{rjson['data']['token_type']} {rjson['data']['token']}"else:self.log(f"登录失败:{rjson['message']}")except Exception as e:self.valid = Falseself.log(f"登录失败:{str(e)}")def addEnvs(self, envs: list) -> bool:"""新建环境变量"""url = f"{self.address}/open/envs"headers = {"Authorization": self.auth,"content-type": "application/json"}try:rjson = requests.post(url, headers=headers,data=jsonDumps(envs)).json()if(rjson['code'] == 200):self.log(f"新建环境变量成功:{len(envs)}")return Trueelse:self.log(f"新建环境变量失败:{rjson['message']}")return Falseexcept Exception as e:self.log(f"新建环境变量失败:{str(e)}")return False

(3)编写配置文件,命名为config.json,代码如下:

{"api_id": "xxxx",//my.telegram.org申请得到"api_hash": "xxxx",//my.telegram.org申请得到"phone": "xxxxx",//TG手机号"database_encryption_key": "changeme1234",//默认即可"proxy_type": {"@type": "proxyTypeSocks5"//代理类型,默认socks5},"proxy_port": "7891",//代理端口"proxy_server": "127.0.0.1",//代理地址"ql_address": "http://127.0.0.1:5700",//青龙面板地址"ql_id": "C9Wi0E6N9-wS",//青龙面板应用Client_ID"ql_secret": "id-ZWzSD_dqr43m6bHF_Y9FN"//青龙面板应用Client_Secret
}

(4)TG客户端,实现消息的接收,文件命名为main.py,代码如下:

from telegram.client import Telegram
from json import loads as jsonLoads
from ql import QLdef getConfig():"""读取配置文件"""file = open("config.json", mode="r")return jsonLoads(file.read())if __name__ == "__main__":config = getConfig()tg = Telegram(api_id=config["api_id"],api_hash=config["api_hash"],phone=config["phone"],database_encryption_key=config["database_encryption_key"],proxy_server=config["proxy_server"],proxy_port=config["proxy_port"],proxy_type=config["proxy_type"],)ql = QL(config["ql_address"], config["ql_id"], config["ql_secret"])tg.login()tg.add_message_handler(ql.handleMessage)tg.idle()

至此系统开发已结束。

四.系统运行

宝塔面板——Docker,进入py-tg容器的终端,进入/app目录:

安装python的requests模块,执行命令:

pip3 install requests

运行服务:

python3 main.py

首次运行需要验证身份,在TG客户端上会收到一个验证码,查看并输入即可完成

当有新消息到达时,会自动识别出环境变量并导入青龙面板:

这样启动关闭终端系统也会关闭,先Ctrl+c关闭系统,执行以下命令:

python3 main.py &

这样可以关闭终端系统也能在后台运行了。

五.结语

以上只是个小例子,TDLib支持的编程语言很多,可以自己去官方网站查看相关文档,或者在上面代码的基础上增加更多功能。

青龙面板教程(四):线报监控系统开发相关推荐

  1. 四信塔式起重机监控系统应用方案

    方案背景 塔式起重机是当前工业建设进行起重运输作业的重要设备,其设备性能.参数.技术指标的可靠性都关系起重机设备的危险,塔式起重机安全事故关系国计民生.危害面广,给国家财产和生命安全带来严重损失. 目 ...

  2. 智能农业大棚监控系统开发

    近年来,我国农业温室大棚得到了迅速发展,但这些大棚的管理主要是由人工来完成的,管理的技术含量很低.随着温室种植面积的迅速增加,单纯依靠人工管理已经不能满足高效农业生产的需求.随着物联网技术的进一步发展 ...

  3. Python自动化开发基础 分布式监控系统开发实战 day8-李杰-专题视频课程

    Python自动化开发基础 分布式监控系统开发实战 day8-10994人已学习 课程介绍         从0基础开始讲解Python语法.流程控制.函数式编程.面向对象开发等重要的Python开发 ...

  4. 青龙面板教程系列-青龙面板Spy监控教程 自动更新环境变量

    Spy亮点介绍 Faker库已添加开卡等活动通用监控脚本. 无需手动执行,解放双手. 自动监控执行开卡,加购等放水活动,无需时刻守护. Spy全天候监控,自动更新环境变量执行任务. 注意事项 本教程基 ...

  5. OpenWRT 软路由部署青龙面板教程

    前言 在服务器上部署青龙面板有非常多弊端: 数据中心 IP 相较于家宽 IP 更容易黑号,而且服务器所在地往往不和自己在同一个城市,异地登录可能会被风控 服务器 IP 固定,一但被拉黑 IP 无法或者 ...

  6. 青龙面板教程(五):代理设置

    一.前言 在某些情况下我们需要脚本通过代理来请求,尤其是容器部署在公网服务器上的时候,IP会出现被限制的情况. 注意,IP限制有两种情况,一种是限制IP请求频率,一种是限制IP类型(来源).对于后者, ...

  7. 5.15日 搭建青龙面板教程——狗东跑跑跑~

    搭个青龙面板,不是有手就行嘛. 每次很无奈,我发现我这文章 吸引的全是小白粉,被迫每次 写文章,都要详细再详细! 直接上教程吧,懒得磨叽了~ 早晨刚在公众号写了一遍,这边就直接搬运吧 1. 服务器购买 ...

  8. 本地安装青龙面板教程【详细版】2022-5.5

    目录 前言 1️⃣安装虚拟机VMware15.5 2️⃣安装Linux系统 3️⃣进入Linux系统 4️⃣打开终端 5️⃣获取ROOT权限 6️⃣Centos安装脚本 7️⃣安装完成,登录宝塔面板 ...

  9. 艺龙十万级服务器监控系统开发的架构和心得

    一.监控系统架构 经历了许多公司,监控系统大概都是从无到有,该经历的也都经历了.所谓监控系统,大概的架构如下: ◆在服务器布置一个Agent,它负责采集数据:  ◆由网上转发到一个分布式管道再转接,就 ...

最新文章

  1. 使用POI将doc文件转换为html
  2. 阿里云叔同:以容器为代表的云原生技术,已经成为释放云价值的最短路径
  3. Navicat——MySQL之delimiter默认设置问题
  4. matlab 传输速率,处理速率转换 - MATLAB Simulink - MathWorks 中国
  5. VS2012如何显示行号
  6. 公务员考试中公共基础知识计算机,2012山东省公务员考试公共基础知识最新考试试题库(完整版)...
  7. 还在死磕 Ajax?那可就 out 了!
  8. 图卷积网络(Graph Convolutional Network)
  9. grafna监控Java接口_性能测试之 JVM 的监控 Grafana
  10. Git——Gitlab服务单机构建
  11. 抽象与具体,形而上者谓之道,形而下者谓之器
  12. 电脑桌面只显示计算机不显示文件夹,如何解决电脑桌面不显示拷贝文件的问题?...
  13. Win10激活(家庭版升级到专业版)带你5分钟解决
  14. 学生信息管理系统(面向对象版本)V3.0
  15. Visual Studio2019新手C++教程(一)
  16. Field ‘xxx‘ doesn‘t have a default value
  17. VB中使用DirectX库的简明教程(3)
  18. Python tkinter库
  19. 如何通过IE浏览器下载视频?
  20. 如何进入VMware Fusion虚拟机BIOS

热门文章

  1. 使用高德地图加在kml文件
  2. 《啊哈C语言》第四章第六节习题2
  3. MTK4G安卓核心板_XY6739CW(MTK6739平台)详细参数性能
  4. CSS入门教程——字体
  5. 动软代码生成器 第一次使用出现附加数据库错误是否添加写入权限
  6. Android Monkey Test
  7. web前端期末大作业——餐品后台管理系统(html+css+javascript)
  8. MATLAB RANSAC拟合空间直线
  9. 十个经典java开发项目及其描述-简历用
  10. ThinkPad E14 G2 笔记本声音无法外放问题的解决办法