mirror of
https://github.com/whyour/qinglong.git
synced 2025-05-23 06:46:09 +08:00
增加chronocat无头模式的QQNT推送
This commit is contained in:
parent
99f6073c8e
commit
2f32452e75
|
@ -173,4 +173,13 @@ export SMTP_NAME=""
|
|||
## PUSHME_KEY (必填)填写PushMe APP上获取的push_key
|
||||
export PUSHME_KEY=""
|
||||
|
||||
## 13. CHRONOCAT
|
||||
## CHRONOCAT_URL 推送 http://127.0.0.1:16530
|
||||
## CHRONOCAT_TOKEN 填写在CHRONOCAT文件生成的访问密钥
|
||||
## CHRONOCAT_QQ 个人:user_id=个人QQ 群则填入group_id=QQ群 多个用英文;隔开同时支持个人和群 如:user_id=xxx;group_id=xxxx;group_id=xxxxx
|
||||
## CHRONOCAT相关API https://chronocat.vercel.app/install/docker/official/
|
||||
export CHRONOCAT_URL=""
|
||||
export CHRONOCAT_QQ="" #
|
||||
export CHRONOCAT_TOKEN=""
|
||||
|
||||
## 其他需要的变量,脚本中需要的变量使用 export 变量名= 声明即可
|
||||
|
|
|
@ -150,6 +150,15 @@ let SMTP_NAME = '';
|
|||
//此处填你的PushMe KEY.
|
||||
let PUSHME_KEY = '';
|
||||
|
||||
// =======================================CHRONOCAT通知设置区域===========================================
|
||||
// CHRONOCAT_URL Red协议连接地址 例: http://127.0.0.1:16530
|
||||
// CHRONOCAT_TOKEN 填写在CHRONOCAT文件生成的访问密钥
|
||||
// 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_QQ = ''; // 个人:user_id=个人QQ 群则填入group_id=QQ群 多个用英文;隔开同时支持个人和群 如:user_id=xxx;group_id=xxxx;group_id=xxxxx
|
||||
|
||||
//==========================云端环境变量的判断与接收=========================
|
||||
if (process.env.GOTIFY_URL) {
|
||||
GOTIFY_URL = process.env.GOTIFY_URL;
|
||||
|
@ -306,6 +315,16 @@ if (process.env.SMTP_NAME) {
|
|||
if (process.env.PUSHME_KEY) {
|
||||
PUSHME_KEY = process.env.PUSHME_KEY;
|
||||
}
|
||||
|
||||
if (process.env.CHRONOCAT_URL) {
|
||||
CHRONOCAT_URL = process.env.CHRONOCAT_URL;
|
||||
}
|
||||
if (process.env.CHRONOCAT_QQ) {
|
||||
CHRONOCAT_QQ = process.env.CHRONOCAT_QQ;
|
||||
}
|
||||
if (process.env.CHRONOCAT_TOKEN) {
|
||||
CHRONOCAT_TOKEN = process.env.CHRONOCAT_TOKEN;
|
||||
}
|
||||
//==========================云端环境变量的判断与接收=========================
|
||||
|
||||
/**
|
||||
|
@ -355,6 +374,7 @@ async function sendNotify(
|
|||
fsBotNotify(text, desp), //飞书机器人
|
||||
smtpNotify(text, desp), //SMTP 邮件
|
||||
PushMeNotify(text, desp, params), //PushMe
|
||||
ChronocatNotify(text, desp) // Chronocat
|
||||
]);
|
||||
}
|
||||
|
||||
|
@ -1171,6 +1191,81 @@ function PushMeNotify(text, desp, params = {}) {
|
|||
});
|
||||
}
|
||||
|
||||
function ChronocatNotify(title, desp) {
|
||||
// 检查 CHRONOCAT 的配置是否完整
|
||||
if (!CHRONOCAT_TOKEN || !CHRONOCAT_QQ || !CHRONOCAT_URL) {
|
||||
console.log("CHRONOCAT 服务的 CHRONOCAT_URL 或 CHRONOCAT_QQ 未设置!!\n取消推送");
|
||||
return;
|
||||
}
|
||||
|
||||
console.log("CHRONOCAT 服务启动");
|
||||
|
||||
// 提取 user_id 和 group_id
|
||||
const user_ids = CHRONOCAT_QQ.match(/user_id=(\d+)/g).map(match => match.split("=")[1]);
|
||||
const group_ids = CHRONOCAT_QQ.match(/group_id=(\d+)/g).map(match => match.split("=")[1]);
|
||||
|
||||
// 设置请求的 URL 和 Headers
|
||||
const url = `${CHRONOCAT_URL}/api/message/send`;
|
||||
const headers = {
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': `Bearer ${CHRONOCAT_TOKEN}`
|
||||
};
|
||||
|
||||
// 发送消息
|
||||
for (const [chat_type, ids] of [[1, user_ids], [2, group_ids]]) {
|
||||
if (!ids) {
|
||||
continue;
|
||||
}
|
||||
for (const chat_id of ids) {
|
||||
const data = {
|
||||
"peer": {
|
||||
"chatType": chat_type,
|
||||
"peerUin": chat_id
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"elementType": 1,
|
||||
"textElement": {
|
||||
"content": `${title}\n\n${desp}`
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
const options = {
|
||||
url: url,
|
||||
json:JSON.stringify(data),
|
||||
headers,
|
||||
timeout,
|
||||
};
|
||||
$.post(options, (err, resp, data) => {
|
||||
try {
|
||||
if (err) {
|
||||
console.log('Chronocat发送QQ通知消息失败!!\n');
|
||||
console.log(err);
|
||||
} else {
|
||||
data = JSON.parse(data);
|
||||
if (chat_type === 1) {
|
||||
console.log(`QQ个人消息:${ids}推送成功!`);
|
||||
} else {
|
||||
console.log(`QQ群消息:${ids}推送成功!`);
|
||||
}
|
||||
// if (data.code === 0) {
|
||||
// console.log('智能微秘书发送通知消息成功🎉。\n');
|
||||
// } else {
|
||||
// console.log(`${data.error}\n`);
|
||||
// }
|
||||
}
|
||||
} catch (e) {
|
||||
$.logErr(e, resp);
|
||||
} finally {
|
||||
resolve(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module.exports = {
|
||||
sendNotify,
|
||||
BARK_PUSH,
|
||||
|
|
|
@ -102,6 +102,9 @@ push_config = {
|
|||
'SMTP_NAME': '', # SMTP 收发件人姓名,可随意填写
|
||||
|
||||
'PUSHME_KEY': '', # PushMe 酱的 PUSHME_KEY
|
||||
'CHRONOCAT_QQ': '', # qq号
|
||||
'CHRONOCAT_TOKEN': '', # CHRONOCAT 的token
|
||||
'CHRONOCAT_URL': '' # CHRONOCAT的url地址
|
||||
}
|
||||
notify_function = []
|
||||
# fmt: on
|
||||
|
@ -664,6 +667,61 @@ def pushme(title: str, content: str) -> None:
|
|||
else:
|
||||
print(f"PushMe 推送失败!{response.status_code} {response.text}")
|
||||
|
||||
def chronocat(title: str, content: str) -> None:
|
||||
"""
|
||||
使用 CHRONOCAT 推送消息。
|
||||
"""
|
||||
# 检查 CHRONOCAT 的配置是否完整
|
||||
if not push_config.get("CHRONOCAT_URL") or not push_config.get("CHRONOCAT_QQ") or not push_config.get(
|
||||
"CHRONOCAT_TOKEN"):
|
||||
print("CHRONOCAT 服务的 CHRONOCAT_URL 或 CHRONOCAT_QQ 未设置!!\n取消推送")
|
||||
return
|
||||
|
||||
print("CHRONOCAT 服务启动")
|
||||
|
||||
# 提取 user_id 和 group_id
|
||||
user_ids = re.findall(r"user_id=(\d+)", push_config.get("CHRONOCAT_QQ"))
|
||||
group_ids = re.findall(r"group_id=(\d+)", push_config.get("CHRONOCAT_QQ"))
|
||||
|
||||
# 设置请求的 URL 和 Headers
|
||||
url = f'{push_config.get("CHRONOCAT_URL")}/api/message/send'
|
||||
headers = {
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': f'Bearer {push_config.get("CHRONOCAT_TOKEN")}'
|
||||
}
|
||||
|
||||
# 发送消息
|
||||
for chat_type, ids in [(1, user_ids), (2, group_ids)]:
|
||||
if not ids:
|
||||
continue
|
||||
for chat_id in ids:
|
||||
data = {
|
||||
"peer": {
|
||||
"chatType": chat_type,
|
||||
"peerUin": chat_id
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"elementType": 1,
|
||||
"textElement": {
|
||||
"content": f'{title}\n\n{content}'
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
response = requests.post(url, headers=headers, data=json.dumps(data))
|
||||
if response.status_code == 200:
|
||||
if chat_type == 1:
|
||||
print(f'QQ个人消息:{ids}推送成功!')
|
||||
else:
|
||||
print(f'QQ群消息:{ids}推送成功!')
|
||||
else:
|
||||
if chat_type == 1:
|
||||
print(f'QQ个人消息:{ids}推送失败!')
|
||||
else:
|
||||
print(f'QQ群消息:{ids}推送失败!')
|
||||
|
||||
|
||||
|
||||
def one() -> str:
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue
Block a user