记一次青龙下的bark通知失败的处理

/ 短文章 / 1 条评论 / 1139浏览

青龙下的bark通知如果太长,会发生失败的情况。通过阅读源码可知,发送bark消息默认使用的是get请求,但是get请求可以携带的信息有长度限制,这时候就需要把请求方式修改为post。

修改sendNotify代码如下

function BarkNotify(text, desp, params = {}) {
  return new Promise((resolve) => {
    if (BARK_PUSH) {
      const options = {
        url: `${process.env.BARK_HOST}/push`,
        json: {
            title: text,
            body: desp,
            level: 'passive',
            group: 'QingLong',
            icon: `${BARK_ICON}`,
            sound: `${BARK_SOUND}`,
            device_key: `${process.env.BARK_TOKEN}`
        },
        headers: {
          'Content-Type': 'application/json; charset=utf-8',
        },
        timeout,
      };
      $.post(options, (err, resp, data) => {
        try {
          if (err) {
            console.log('Bark APP发送通知调用API失败!!\n');
            console.log(err);
          } else {
            data = JSON.parse(data);
            if (data.code === 200) {
              console.log('Bark APP发送通知消息成功🎉\n');
            } else {
              console.log(`${data.message}\n`);
            }
          }
        } catch (e) {
          $.logErr(e, resp);
        } finally {
          resolve();
        }
      });
    } else {
      resolve();
    }
  });
}

现在这样是可以发送长消息的。但是每次执行完ql repo之后,以上的修改又会被覆盖掉。经过在原作者GitHub库回答的issue得知,默认会拷贝青龙容器中 /ql/deps 到所有其他的repo中,这样问题就简单了,用以上方法,修改/ql/deps/sendNotify.js即可。

  1. 按照你修改后还是不行,醉了,目前只有登陆能通知,,要它何用

    回复