From 897b7105271eeab90e794566ea905188ffcbe44b Mon Sep 17 00:00:00 2001 From: whyour Date: Fri, 1 Dec 2023 09:21:27 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E7=9F=A5=20TG=5FAPI=5FHOST=20?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E7=A7=BB=E9=99=A4=E9=BB=98=E8=AE=A4=20https?= =?UTF-8?q?=20=E5=8D=8F=E8=AE=AE=EF=BC=8C=E5=8F=82=E6=95=B0=E5=8C=85?= =?UTF-8?q?=E5=90=AB=E5=8D=8F=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/data/notify.ts | 2 +- back/services/notify.ts | 9 ++- sample/notify.js | 162 ++++++++++++++++++++-------------------- sample/notify.py | 2 +- 4 files changed, 88 insertions(+), 87 deletions(-) diff --git a/back/data/notify.ts b/back/data/notify.ts index 15126609..f2f3a3e9 100644 --- a/back/data/notify.ts +++ b/back/data/notify.ts @@ -66,7 +66,7 @@ export class TelegramBotNotification extends NotificationBaseInfo { public telegramBotProxyHost = ''; public telegramBotProxyPort = ''; public telegramBotProxyAuth = ''; - public telegramBotApiHost = 'api.telegram.org'; + public telegramBotApiHost = 'https://api.telegram.org'; } export class DingtalkBotNotification extends NotificationBaseInfo { diff --git a/back/services/notify.ts b/back/services/notify.ts index 9962ddf2..386ae57f 100644 --- a/back/services/notify.ts +++ b/back/services/notify.ts @@ -42,7 +42,7 @@ export default class NotificationService { retry: 1, }; - constructor(@Inject('logger') private logger: winston.Logger) { } + constructor(@Inject('logger') private logger: winston.Logger) {} public async notify( title: string, @@ -234,8 +234,9 @@ export default class NotificationService { telegramBotUserId, } = this.params; const authStr = telegramBotProxyAuth ? `${telegramBotProxyAuth}@` : ''; - const url = `https://${telegramBotApiHost ? telegramBotApiHost : 'api.telegram.org' - }/bot${telegramBotToken}/sendMessage`; + const url = `${ + telegramBotApiHost ? telegramBotApiHost : 'https://api.telegram.org' + }/bot${telegramBotToken}/sendMessage`; let agent; if (telegramBotProxyHost && telegramBotProxyPort) { const options: any = { @@ -661,7 +662,7 @@ export default class NotificationService { ); if (!formatUrl && !formatBody) { - throw new Error('Url 或者 Body 中必须包含 $title') + throw new Error('Url 或者 Body 中必须包含 $title'); } const headers = parseHeaders(webhookHeaders); diff --git a/sample/notify.js b/sample/notify.js index ea140c04..f4c236cf 100644 --- a/sample/notify.js +++ b/sample/notify.js @@ -13,81 +13,81 @@ const querystring = require('querystring'); const got = require('got'); const $ = new Env(); -const timeout = 15000; //超时时间(单位毫秒) +const timeout = 15000;// 超时时间(单位毫秒) // =======================================gotify通知设置区域============================================== -//gotify_url 填写gotify地址,如https://push.example.de:8080 -//gotify_token 填写gotify的消息应用token -//gotify_priority 填写推送消息优先级,默认为0 +// gotify_url 填写gotify地址,如https://push.example.de:8080 +// gotify_token 填写gotify的消息应用token +// gotify_priority 填写推送消息优先级,默认为0 let GOTIFY_URL = ''; let GOTIFY_TOKEN = ''; let GOTIFY_PRIORITY = 0; // =======================================go-cqhttp通知设置区域=========================================== -//gobot_url 填写请求地址http://127.0.0.1/send_private_msg -//gobot_token 填写在go-cqhttp文件设置的访问密钥 -//gobot_qq 填写推送到个人QQ或者QQ群号 -//go-cqhttp相关API https://docs.go-cqhttp.org/api +// gobot_url 填写请求地址http://127.0.0.1/send_private_msg +// gobot_token 填写在go-cqhttp文件设置的访问密钥 +// gobot_qq 填写推送到个人QQ或者QQ群号 +// go-cqhttp相关API https://docs.go-cqhttp.org/api let GOBOT_URL = ''; // 推送到个人QQ: http://127.0.0.1/send_private_msg 群:http://127.0.0.1/send_group_msg -let GOBOT_TOKEN = ''; //访问密钥 +let GOBOT_TOKEN = '';// 访问密钥 let GOBOT_QQ = ''; // 如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群 // =======================================微信server酱通知设置区域=========================================== -//此处填你申请的SCKEY. -//(环境变量名 PUSH_KEY) +// 此处填你申请的SCKEY. +// (环境变量名 PUSH_KEY) let SCKEY = ''; // =======================================PushDeer通知设置区域=========================================== -//此处填你申请的PushDeer KEY. -//(环境变量名 DEER_KEY) +// 此处填你申请的PushDeer KEY. +// (环境变量名 DEER_KEY) let PUSHDEER_KEY = ''; let PUSHDEER_URL = ''; // =======================================Synology Chat通知设置区域=========================================== -//此处填你申请的CHAT_URL与CHAT_TOKEN -//(环境变量名 CHAT_URL CHAT_TOKEN) +// 此处填你申请的CHAT_URL与CHAT_TOKEN +// (环境变量名 CHAT_URL CHAT_TOKEN) let CHAT_URL = ''; let CHAT_TOKEN = ''; // =======================================Bark App通知设置区域=========================================== -//此处填你BarkAPP的信息(IP/设备码,例如:https://api.day.app/XXXXXXXX) +// 此处填你BarkAPP的信息(IP/设备码,例如:https://api.day.app/XXXXXXXX) let BARK_PUSH = ''; -//BARK app推送图标,自定义推送图标(需iOS15或以上) +// BARK app推送图标,自定义推送图标(需iOS15或以上) let BARK_ICON = 'https://qn.whyour.cn/logo.png'; -//BARK app推送铃声,铃声列表去APP查看复制填写 +// BARK app推送铃声,铃声列表去APP查看复制填写 let BARK_SOUND = ''; -//BARK app推送消息的分组, 默认为"QingLong" +// BARK app推送消息的分组, 默认为"QingLong" let BARK_GROUP = 'QingLong'; -//BARK app推送消息的时效性, 默认为"active" +// BARK app推送消息的时效性, 默认为"active" let BARK_LEVEL = 'active'; -//BARK app推送消息的跳转URL +// BARK app推送消息的跳转URL let BARK_URL = ''; // =======================================telegram机器人通知设置区域=========================================== -//此处填你telegram bot 的Token,telegram机器人通知推送必填项.例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw -//(环境变量名 TG_BOT_TOKEN) +// 此处填你telegram bot 的Token,telegram机器人通知推送必填项.例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw +// (环境变量名 TG_BOT_TOKEN) let TG_BOT_TOKEN = ''; -//此处填你接收通知消息的telegram用户的id,telegram机器人通知推送必填项.例如:129xxx206 -//(环境变量名 TG_USER_ID) +// 此处填你接收通知消息的telegram用户的id,telegram机器人通知推送必填项.例如:129xxx206 +// (环境变量名 TG_USER_ID) let TG_USER_ID = ''; -//tg推送HTTP代理设置(不懂可忽略,telegram机器人通知推送功能中非必填) -let TG_PROXY_HOST = ''; //例如:127.0.0.1(环境变量名:TG_PROXY_HOST) -let TG_PROXY_PORT = ''; //例如:1080(环境变量名:TG_PROXY_PORT) -let TG_PROXY_AUTH = ''; //tg代理配置认证参数 -//Telegram api自建的反向代理地址(不懂可忽略,telegram机器人通知推送功能中非必填),默认tg官方api(环境变量名:TG_API_HOST) -let TG_API_HOST = 'api.telegram.org'; +// tg推送HTTP代理设置(不懂可忽略,telegram机器人通知推送功能中非必填) +let TG_PROXY_HOST = '';// 例如:127.0.0.1(环境变量名:TG_PROXY_HOST) +let TG_PROXY_PORT = '';// 例如:1080(环境变量名:TG_PROXY_PORT) +let TG_PROXY_AUTH = '';// tg代理配置认证参数 +// Telegram api自建的反向代理地址(不懂可忽略,telegram机器人通知推送功能中非必填),默认tg官方api(环境变量名:TG_API_HOST) +let TG_API_HOST = 'https://api.telegram.org'; // =======================================钉钉机器人通知设置区域=========================================== -//此处填你钉钉 bot 的webhook,例如:5a544165465465645d0f31dca676e7bd07415asdasd -//(环境变量名 DD_BOT_TOKEN) +// 此处填你钉钉 bot 的webhook,例如:5a544165465465645d0f31dca676e7bd07415asdasd +// (环境变量名 DD_BOT_TOKEN) let DD_BOT_TOKEN = ''; -//密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串 +// 密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串 let DD_BOT_SECRET = ''; // =======================================企业微信基础设置=========================================== // 企业微信反向代理地址 -//(环境变量名 QYWX_ORIGIN) +// (环境变量名 QYWX_ORIGIN) let QYWX_ORIGIN = ''; // =======================================企业微信机器人通知设置区域=========================================== -//此处填你企业微信机器人的 webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa -//(环境变量名 QYWX_KEY) +// 此处填你企业微信机器人的 webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa +// (环境变量名 QYWX_KEY) let QYWX_KEY = ''; // =======================================企业微信应用消息通知设置区域=========================================== @@ -103,35 +103,35 @@ let QYWX_KEY = ''; let QYWX_AM = ''; // =======================================iGot聚合推送通知设置区域=========================================== -//此处填您iGot的信息(推送key,例如:https://push.hellyw.com/XXXXXXXX) +// 此处填您iGot的信息(推送key,例如:https://push.hellyw.com/XXXXXXXX) let IGOT_PUSH_KEY = ''; // =======================================push+设置区域======================================= -//官方文档:http://www.pushplus.plus/ -//PUSH_PLUS_TOKEN:微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送 -//PUSH_PLUS_USER: 一对多推送的“群组编码”(一对多推送下面->您的群组(如无则新建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送) +// 官方文档:http://www.pushplus.plus/ +// PUSH_PLUS_TOKEN:微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送 +// PUSH_PLUS_USER: 一对多推送的“群组编码”(一对多推送下面->您的群组(如无则新建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送) let PUSH_PLUS_TOKEN = ''; let PUSH_PLUS_USER = ''; // =======================================Cool Push设置区域======================================= -//官方文档:https://cp.xuthus.cc/docs -//QQ_SKEY: Cool Push登录授权后推送消息的调用代码Skey -//QQ_MODE: 推送模式详情请登录获取QQ_SKEY后见https://cp.xuthus.cc/feat +// 官方文档:https://cp.xuthus.cc/docs +// QQ_SKEY: Cool Push登录授权后推送消息的调用代码Skey +// QQ_MODE: 推送模式详情请登录获取QQ_SKEY后见https://cp.xuthus.cc/feat let QQ_SKEY = ''; let QQ_MODE = ''; // =======================================智能微秘书设置区域======================================= -//官方文档:http://wechat.aibotk.com/docs/about -//AIBOTK_KEY: 填写智能微秘书个人中心的apikey -//AIBOTK_TYPE:填写发送的目标 room 或 contact, 填其他的不生效 -//AIBOTK_NAME: 填写群名或用户昵称,和上面的type类型要对应 +// 官方文档:http://wechat.aibotk.com/docs/about +// AIBOTK_KEY: 填写智能微秘书个人中心的apikey +// AIBOTK_TYPE:填写发送的目标 room 或 contact, 填其他的不生效 +// AIBOTK_NAME: 填写群名或用户昵称,和上面的type类型要对应 let AIBOTK_KEY = ''; let AIBOTK_TYPE = ''; let AIBOTK_NAME = ''; // =======================================飞书机器人设置区域======================================= -//官方文档:https://www.feishu.cn/hc/zh-CN/articles/360024984973 -//FSKEY 飞书机器人的 FSKEY +// 官方文档:https://www.feishu.cn/hc/zh-CN/articles/360024984973 +// FSKEY 飞书机器人的 FSKEY let FSKEY = ''; // =======================================SMTP 邮件设置区域======================================= @@ -147,8 +147,8 @@ let SMTP_PASSWORD = ''; let SMTP_NAME = ''; // =======================================PushMe通知设置区域=========================================== -//官方文档:https://push.i-i.me/ -//此处填你的PushMe KEY. +// 官方文档:https://push.i-i.me/ +// 此处填你的PushMe KEY. let PUSHME_KEY = ''; // =======================================CHRONOCAT通知设置区域=========================================== @@ -157,7 +157,7 @@ let PUSHME_KEY = ''; // CHRONOCAT_QQ 个人:user_id=个人QQ 群则填入group_id=QQ群 多个用英文;隔开同时支持个人和群 // CHRONOCAT相关API https://chronocat.vercel.app/install/docker/official/ let CHRONOCAT_URL = ''; // CHRONOCAT Red协议连接地址 -let CHRONOCAT_TOKEN = ''; //CHRONOCAT 生成的访问密钥 +let CHRONOCAT_TOKEN = '';// CHRONOCAT 生成的访问密钥 let CHRONOCAT_QQ = ''; // 个人:user_id=个人QQ 群则填入group_id=QQ群 多个用英文;隔开同时支持个人和群 如:user_id=xxx;group_id=xxxx;group_id=xxxxx // =======================================自定义通知设置区域======================================= @@ -168,7 +168,7 @@ let WEBHOOK_HEADERS = ''; let WEBHOOK_METHOD = ''; let WEBHOOK_CONTENT_TYPE = ''; -//==========================云端环境变量的判断与接收========================= +// ==========================云端环境变量的判断与接收========================= if (process.env.GOTIFY_URL) { GOTIFY_URL = process.env.GOTIFY_URL; } @@ -219,7 +219,7 @@ if (process.env.BARK_PUSH) { process.env.BARK_PUSH.indexOf('https') > -1 || process.env.BARK_PUSH.indexOf('http') > -1 ) { - //兼容BARK自建用户 + // 兼容BARK自建用户 BARK_PUSH = process.env.BARK_PUSH; } else { BARK_PUSH = `https://api.day.app/${process.env.BARK_PUSH}`; @@ -245,7 +245,7 @@ if (process.env.BARK_PUSH) { BARK_PUSH.indexOf('https') === -1 && BARK_PUSH.indexOf('http') === -1 ) { - //兼容BARK本地用户只填写设备码的情况 + // 兼容BARK本地用户只填写设备码的情况 BARK_PUSH = `https://api.day.app/${BARK_PUSH}`; } } @@ -350,7 +350,7 @@ if (process.env.WEBHOOK_METHOD) { if (process.env.WEBHOOK_CONTENT_TYPE) { WEBHOOK_CONTENT_TYPE = process.env.WEBHOOK_CONTENT_TYPE; } -//==========================云端环境变量的判断与接收========================= +// ==========================云端环境变量的判断与接收========================= /** * sendNotify 推送通知功能 @@ -366,8 +366,8 @@ async function sendNotify( params = {}, author = '\n\n本通知 By:https://github.com/whyour/qinglong', ) { - //提供6种通知 - desp += author; //增加作者信息,防止被贩卖等 + // 提供6种通知 + desp += author;// 增加作者信息,防止被贩卖等 // 根据标题跳过一些消息推送,环境变量:SKIP_PUSH_TITLE 用回车分隔 let skipTitle = process.env.SKIP_PUSH_TITLE; @@ -379,28 +379,28 @@ async function sendNotify( } await Promise.all([ - serverNotify(text, desp), //微信server酱 - pushPlusNotify(text, desp), //pushplus(推送加) + serverNotify(text, desp),// 微信server酱 + pushPlusNotify(text, desp),// pushplus(推送加) ]); - //由于上述两种微信通知需点击进去才能查看到详情,故text(标题内容)携带了账号序号以及昵称信息,方便不点击也可知道是哪个京东哪个活动 + // 由于上述两种微信通知需点击进去才能查看到详情,故text(标题内容)携带了账号序号以及昵称信息,方便不点击也可知道是哪个京东哪个活动 text = text.match(/.*?(?=\s?-)/g) ? text.match(/.*?(?=\s?-)/g)[0] : text; await Promise.all([ - BarkNotify(text, desp, params), //iOS Bark APP - tgBotNotify(text, desp), //telegram 机器人 - ddBotNotify(text, desp), //钉钉机器人 - qywxBotNotify(text, desp), //企业微信机器人 - qywxamNotify(text, desp), //企业微信应用消息推送 - iGotNotify(text, desp, params), //iGot - gobotNotify(text, desp), //go-cqhttp - gotifyNotify(text, desp), //gotify - ChatNotify(text, desp), //synolog chat - PushDeerNotify(text, desp), //PushDeer - aibotkNotify(text, desp), //智能微秘书 - fsBotNotify(text, desp), //飞书机器人 - smtpNotify(text, desp), //SMTP 邮件 - pushMeNotify(text, desp, params), //PushMe + BarkNotify(text, desp, params),// iOS Bark APP + tgBotNotify(text, desp),// telegram 机器人 + ddBotNotify(text, desp),// 钉钉机器人 + qywxBotNotify(text, desp),// 企业微信机器人 + qywxamNotify(text, desp),// 企业微信应用消息推送 + iGotNotify(text, desp, params),// iGot + gobotNotify(text, desp),// go-cqhttp + gotifyNotify(text, desp),// gotify + ChatNotify(text, desp),// synolog chat + PushDeerNotify(text, desp),// PushDeer + aibotkNotify(text, desp),// 智能微秘书 + fsBotNotify(text, desp),// 飞书机器人 + smtpNotify(text, desp),// SMTP 邮件 + pushMeNotify(text, desp, params),// PushMe chronocatNotify(text, desp), // Chronocat - webhookNotify(text, desp), //自定义通知 + webhookNotify(text, desp),// 自定义通知 ]); } @@ -482,7 +482,7 @@ function gobotNotify(text, desp) { function serverNotify(text, desp) { return new Promise((resolve) => { if (SCKEY) { - //微信server酱推送通知一个\n不会换行,需要两个\n才能换行,故做此替换 + // 微信server酱推送通知一个\n不会换行,需要两个\n才能换行,故做此替换 desp = desp.replace(/[\n\r]/g, '\n\n'); const options = { url: SCKEY.includes('SCT') @@ -501,7 +501,7 @@ function serverNotify(text, desp) { console.log(err); } else { data = JSON.parse(data); - //server酱和Server酱·Turbo版的返回json格式不太一样 + // server酱和Server酱·Turbo版的返回json格式不太一样 if (data.errno === 0 || data.data.errno === 0) { console.log('server酱发送通知消息成功🎉\n'); } else if (data.errno === 1024) { @@ -645,7 +645,7 @@ function tgBotNotify(text, desp) { return new Promise((resolve) => { if (TG_BOT_TOKEN && TG_USER_ID) { const options = { - url: `https://${TG_API_HOST}/bot${TG_BOT_TOKEN}/sendMessage`, + url: `${TG_API_HOST}/bot${TG_BOT_TOKEN}/sendMessage`, json: { chat_id: `${TG_USER_ID}`, text: `${text}\n\n${desp}`, @@ -885,7 +885,7 @@ function qywxamNotify(text, desp) { }; } if (!QYWX_AM_AY[4]) { - //如不提供第四个参数,则默认进行文本消息类型推送 + // 如不提供第四个参数,则默认进行文本消息类型推送 options = { msgtype: 'text', text: { diff --git a/sample/notify.py b/sample/notify.py index 25df2f97..0c22d7ae 100644 --- a/sample/notify.py +++ b/sample/notify.py @@ -534,7 +534,7 @@ def telegram_bot(title: str, content: str) -> None: print("tg 服务启动") if push_config.get("TG_API_HOST"): - url = f"https://{push_config.get('TG_API_HOST')}/bot{push_config.get('TG_BOT_TOKEN')}/sendMessage" + url = f"{push_config.get('TG_API_HOST')}/bot{push_config.get('TG_BOT_TOKEN')}/sendMessage" else: url = ( f"https://api.telegram.org/bot{push_config.get('TG_BOT_TOKEN')}/sendMessage"