const got = require('got'); const timeout = 15000; const push_config = { HITOKOTO: true, // 启用一言(随机句子) // 官方文档:http://www.pushplus.plus/ PUSH_PLUS_TOKEN: '79e01a66036642e5969d52a5952b5cb7', // push+ 微信推送的用户令牌 PUSH_PLUS_USER: '', // push+ 微信推送的群组编码 WEBHOOK_URL: '', // 自定义通知 请求地址 WEBHOOK_BODY: '', // 自定义通知 请求体 WEBHOOK_HEADERS: '', // 自定义通知 请求头 WEBHOOK_METHOD: '', // 自定义通知 请求方法 WEBHOOK_CONTENT_TYPE: '', // 自定义通知 content-type NTFY_URL: '', // ntfy地址,如https://ntfy.sh,默认为https://ntfy.sh NTFY_TOPIC: '', // ntfy的消息应用topic NTFY_PRIORITY: '3', // 推送消息优先级,默认为3 }; const $ = { post: (params, callback) => { const { url, ...others } = params; got.post(url, others).then( (res) => { let body = res.body; try { body = JSON.parse(body); } catch (error) {} callback(null, res, body); }, (err) => { callback(err?.response?.body || err); } ); }, get: (params, callback) => { const { url, ...others } = params; got.get(url, others).then( (res) => { let body = res.body; try { body = JSON.parse(body); } catch (error) {} callback(null, res, body); }, (err) => { callback(err?.response?.body || err); } ); }, logErr: console.log, }; function pushPlusNotify(text, desp) { return new Promise((resolve) => { const { PUSH_PLUS_TOKEN, PUSH_PLUS_USER } = push_config; if (PUSH_PLUS_TOKEN) { desp = desp.replace(/[\n\r]/g, '
'); // 默认为html, 不支持plaintext const body = { token: `${PUSH_PLUS_TOKEN}`, title: `${text}`, content: `${desp}`, topic: `${PUSH_PLUS_USER}`, }; const options = { url: `https://www.pushplus.plus/send`, body: JSON.stringify(body), headers: { 'Content-Type': ' application/json', }, timeout, }; $.post(options, (err, resp, data) => { try { if (err) { console.log(`Push+ 发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息失败😞\n`, err); } else { if (data.code === 200) { console.log(`Push+ 发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息完成🎉\n`); } else { console.log( `Push+ 发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息异常 ${data.msg}\n` ); } } } catch (e) { $.logErr(e, resp); } finally { resolve(data); } }); } else { resolve(); } }); } (async () => { await pushPlusNotify('测试', '测试'); })();