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
|
## PUSHME_KEY (必填)填写PushMe APP上获取的push_key
|
||||||
export PUSHME_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 变量名= 声明即可
|
## 其他需要的变量,脚本中需要的变量使用 export 变量名= 声明即可
|
||||||
|
|
|
@ -150,6 +150,15 @@ let SMTP_NAME = '';
|
||||||
//此处填你的PushMe KEY.
|
//此处填你的PushMe KEY.
|
||||||
let 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) {
|
if (process.env.GOTIFY_URL) {
|
||||||
GOTIFY_URL = process.env.GOTIFY_URL;
|
GOTIFY_URL = process.env.GOTIFY_URL;
|
||||||
|
@ -306,6 +315,16 @@ if (process.env.SMTP_NAME) {
|
||||||
if (process.env.PUSHME_KEY) {
|
if (process.env.PUSHME_KEY) {
|
||||||
PUSHME_KEY = 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), //飞书机器人
|
fsBotNotify(text, desp), //飞书机器人
|
||||||
smtpNotify(text, desp), //SMTP 邮件
|
smtpNotify(text, desp), //SMTP 邮件
|
||||||
PushMeNotify(text, desp, params), //PushMe
|
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 = {
|
module.exports = {
|
||||||
sendNotify,
|
sendNotify,
|
||||||
BARK_PUSH,
|
BARK_PUSH,
|
||||||
|
|
|
@ -102,6 +102,9 @@ push_config = {
|
||||||
'SMTP_NAME': '', # SMTP 收发件人姓名,可随意填写
|
'SMTP_NAME': '', # SMTP 收发件人姓名,可随意填写
|
||||||
|
|
||||||
'PUSHME_KEY': '', # PushMe 酱的 PUSHME_KEY
|
'PUSHME_KEY': '', # PushMe 酱的 PUSHME_KEY
|
||||||
|
'CHRONOCAT_QQ': '', # qq号
|
||||||
|
'CHRONOCAT_TOKEN': '', # CHRONOCAT 的token
|
||||||
|
'CHRONOCAT_URL': '' # CHRONOCAT的url地址
|
||||||
}
|
}
|
||||||
notify_function = []
|
notify_function = []
|
||||||
# fmt: on
|
# fmt: on
|
||||||
|
@ -664,6 +667,61 @@ def pushme(title: str, content: str) -> None:
|
||||||
else:
|
else:
|
||||||
print(f"PushMe 推送失败!{response.status_code} {response.text}")
|
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:
|
def one() -> str:
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue
Block a user