feat: 显示运行时间

This commit is contained in:
shanmite 2021-03-26 16:58:30 +08:00
parent 8a81097198
commit caf326c48e
11 changed files with 167 additions and 157 deletions

View File

@ -1,22 +1,21 @@
@REM 下载代码到本地
@REM 安装node(http://nodejs.cn/download/)
@REM Windows
@REM 此批处理脚本为本地运行代码前设置环境变量时所需
@REM 使用时先将本文件名改成env.bat
@REM 填入相应的值
@REM 需注意 % 要转义为 %%
@REM npm run test_start 启动脚本
@REM npm run test_check 检查是否中奖(只查看两个小时内的奖)
@REM npm run test_clear 清空动态和关注(须set CLEAR=true)
@REM 运行成功后在lib文件夹下会生成一个GlobalVar.json文件和dyid.txt文件
@REM 换参数时须先将GlobalVar.json文件删除
@REM 如果要运行多账号只能复制本项目并依次独立运行
:: 下载代码到本地
:: 安装node(http://nodejs.cn/download/)
:: 此批处理脚本为本地运行代码前设置环境变量时所需
:: 使用时先将本文件名改成env.bat
:: 填入相应的值 ==需注意 % 要转义为 %%==
:: 进入文件夹打开CMD
:: npm run test_start 启动脚本
:: npm run test_check 检查是否中奖(只查看两个小时内的奖)
:: npm run test_clear 清空动态和关注(须set CLEAR=true)
:: 运行成功后在lib文件夹下会生成一个GlobalVar.json文件和dyid.txt文件
:: ==换参数时须先将GlobalVar.json文件删除==
:: 如果要运行多账号只能复制本项目并依次独立运行
:: ==注意运行时请去掉注释==
set COOKIE=
set NUMBER=1
set CLEAR=
set LOCALLAUNCH=true
@REM 推送所需环境变量(可不填)
:: 推送所需环境变量(可不填)
set SCKEY=
set SENDKEY=
set QQ_SKEY=

View File

@ -20,11 +20,11 @@ const Base = {
const obj = JSON.parse(str);
return typeof obj === 'object' ? obj : false
} catch (_) {
console.log(str);
this.tooltip.log(str);
return false;
}
} else {
console.log(`${str}\nIt is not a string!`);
this.tooltip.log(`${str}\nIt is not a string!`);
return false;
}
})(params);
@ -110,6 +110,15 @@ const Base = {
})
});
},
/**提示信息 */
tooltip: {
log: (msg) => {
console.log("%s: %s", new Date().toLocaleString(), msg)
},
warn: (msg) => {
console.log("%s: %s", new Date().toLocaleString(), msg)
}
},
/**
* 提取开奖信息
* @param {string} des 描述
@ -180,7 +189,7 @@ const Base = {
}
},
failure: err => {
console.log('获取远程设置错误: ' + err);
this.tooltip.log('获取远程设置错误: ' + err);
resolve(JSON.parse('{}'));
}
})

View File

@ -102,7 +102,7 @@ const BiliAPI = {
success: responseText => {
let res = Base.strToJson(responseText);
if (res.code === 0) {
console.log('[获取一页私信](20)成功 end_ts->' + ts_16);
Base.tooltip.log('[获取一页私信](20)成功 end_ts->' + ts_16);
/**@type {Array} */
const sessions = res.data.session_list || [];
const has_more = res.data.has_more;
@ -113,7 +113,7 @@ const BiliAPI = {
})
resolve({ has_more, data })
} else {
console.log(`[获取私信]失败\n${responseText}`);
Base.tooltip.log(`[获取私信]失败\n${responseText}`);
resolve({ has_more: 0, data: [] });
}
}
@ -139,9 +139,9 @@ const BiliAPI = {
success: responseText => {
let res = Base.strToJson(responseText);
if (res.code === 0) {
console.log(`[私信已读]成功 -> talker_id: ${talker_id}`);
Base.tooltip.log(`[私信已读]成功 -> talker_id: ${talker_id}`);
} else {
console.log(`[私信已读]失败 -> talker_id: ${talker_id}`);
Base.tooltip.log(`[私信已读]失败 -> talker_id: ${talker_id}`);
}
}
})
@ -162,10 +162,10 @@ const BiliAPI = {
success: responseText => {
let res = Base.strToJson(responseText);
if (res.code === 0) {
console.log('[获取关注列表]成功');
Base.tooltip.log('[获取关注列表]成功');
resolve(res.data.list.toString());
} else {
console.log(`[获取关注列表]失败\n${responseText}`);
Base.tooltip.log(`[获取关注列表]失败\n${responseText}`);
resolve(null);
}
}
@ -217,7 +217,7 @@ const BiliAPI = {
success: responseText => {
const res = Base.strToJson(responseText);
if (res.code !== 0) {
console.log('获取TagID失败');
Base.tooltip.log('获取TagID失败');
resolve(-1);
}
resolve(res.data.tag_id);
@ -284,7 +284,7 @@ const BiliAPI = {
if (res.code === 0) {
resolve(res.data.follower);
} else {
console.log('获取关注数出错,可能是访问过频繁');
Base.tooltip.log('获取关注数出错,可能是访问过频繁');
resolve(0);
}
}
@ -335,7 +335,7 @@ const BiliAPI = {
isMe: isMe
});
} else {
console.log(`获取开奖信息失败\n${responseText}`);
Base.tooltip.log(`获取开奖信息失败\n${responseText}`);
resolve({
ts: 0,
text: '获取开奖信息失败',
@ -370,10 +370,10 @@ const BiliAPI = {
success: responseText => {
/* 重复关注code also equal 0 */
if (/^{"code":0/.test(responseText)) {
console.log('[自动关注]关注+1');
Base.tooltip.log('[自动关注]关注+1');
resolve(1);
} else {
console.log(`[自动关注]失败 尝试切换线路\n${responseText}`);
Base.tooltip.log(`[自动关注]失败 尝试切换线路\n${responseText}`);
Ajax.post({
url: 'https://api.vc.bilibili.com/feed/v1/feed/SetUserFollow',
hasCookies: true,
@ -385,10 +385,10 @@ const BiliAPI = {
},
success: responseText => {
if (/^{"code":0/.test(responseText)) {
console.log('[自动关注]关注+1');
Base.tooltip.log('[自动关注]关注+1');
resolve(1);
} else {
console.log(`[自动关注]失败 尝试切换另一条线路\n${responseText}`);
Base.tooltip.log(`[自动关注]失败 尝试切换另一条线路\n${responseText}`);
Ajax.post({
url: 'https://api.bilibili.com/x/relation/batch/modify',
hasCookies: true,
@ -401,10 +401,10 @@ const BiliAPI = {
},
success: responseText => {
if (/^{"code":0/.test(responseText)) {
console.log('[自动关注]关注+1');
Base.tooltip.log('[自动关注]关注+1');
resolve(1);
} else {
console.log(`[自动关注]失败\n${responseText}`);
Base.tooltip.log(`[自动关注]失败\n${responseText}`);
resolve(0);
}
}
@ -437,10 +437,10 @@ const BiliAPI = {
success: responseText => {
/* 重复移动code also equal 0 */
if (/^{"code":0/.test(responseText)) {
console.log('[移动分区]up主分区移动成功');
Base.tooltip.log('[移动分区]up主分区移动成功');
resolve(1);
} else {
console.log(`[移动分区]up主分区移动失败\n${responseText}`);
Base.tooltip.log(`[移动分区]up主分区移动失败\n${responseText}`);
resolve(0);
}
}
@ -468,10 +468,10 @@ const BiliAPI = {
success: responseText => {
const res = Base.strToJson(responseText);
if (res.code === 0) {
console.log('[自动取关]取关成功');
Base.tooltip.log('[自动取关]取关成功');
resolve(true)
} else {
console.log(`[自动取关]取关失败\n${responseText}`);
Base.tooltip.log(`[自动取关]取关失败\n${responseText}`);
resolve(false)
}
}
@ -497,10 +497,10 @@ const BiliAPI = {
},
success: responseText => {
if (/^{"code":0/.test(responseText)) {
console.log('[自动点赞]点赞成功');
Base.tooltip.log('[自动点赞]点赞成功');
resolve(1);
} else {
console.log(`[转发动态]点赞失败\n${responseText}`);
Base.tooltip.log(`[转发动态]点赞失败\n${responseText}`);
resolve(0);
}
}
@ -536,10 +536,10 @@ const BiliAPI = {
},
success: responseText => {
if (/^{"code":0/.test(responseText)) {
console.log('[转发动态]成功转发一条动态');
Base.tooltip.log('[转发动态]成功转发一条动态');
resolve(1);
} else {
console.log(`[转发动态]转发动态失败\n${responseText}`);
Base.tooltip.log(`[转发动态]转发动态失败\n${responseText}`);
resolve(0);
}
}
@ -582,9 +582,9 @@ const BiliAPI = {
data,
success: responseText => {
if (/^{"code":0/.test(responseText)) {
console.log('[发布动态]成功创建一条随机内容的动态');
Base.tooltip.log('[发布动态]成功创建一条随机内容的动态');
} else {
console.warn(`[发布动态]发布动态失败\n${responseText}`);
Base.tooltip.warn(`[发布动态]发布动态失败\n${responseText}`);
}
}
})
@ -606,10 +606,10 @@ const BiliAPI = {
},
success: responseText => {
if (/^{"code":0/.test(responseText)) {
console.log('[删除动态]成功删除一条动态');
Base.tooltip.log('[删除动态]成功删除一条动态');
resolve(true);
} else {
console.log(`[删除动态]删除动态失败\n${responseText}`);
Base.tooltip.log(`[删除动态]删除动态失败\n${responseText}`);
resolve(false);
}
}
@ -642,13 +642,13 @@ const BiliAPI = {
success: responseText => {
const res = Base.strToJson(responseText);
if (res.code === 0) {
show ? console.log('[自动评论]评论成功') : void 0;
show ? Base.tooltip.log('[自动评论]评论成功') : void 0;
resolve(1);
} else if (res.code === -404) {
show ? console.log('[自动评论]原动态已删除') : void 0;
show ? Base.tooltip.log('[自动评论]原动态已删除') : void 0;
resolve(1);
} else {
show ? console.log('[自动评论]评论失败') : void 0;
show ? Base.tooltip.log('[自动评论]评论失败') : void 0;
resolve(0);
}
}
@ -680,7 +680,7 @@ const BiliAPI = {
success: responseText => {
let obj = Base.strToJson(responseText);
if (obj.code === 0) {
console.log('[新建分区]分区新建成功');
Base.tooltip.log('[新建分区]分区新建成功');
let tagid = obj.data.tagid; /* 获取tagid */
resolve(tagid);
}
@ -719,10 +719,10 @@ const BiliAPI = {
res.data.forEach(d => {
uids.push(d.mid);
})
console.log(`[获取分组${tagid}]成功获取取关分区列表${n}`);
Base.tooltip.log(`[获取分组${tagid}]成功获取取关分区列表${n}`);
resolve(uids)
} else {
console.warn(`[获取分组]获取取关分区列表失败\n${responseText}`);
Base.tooltip.warn(`[获取分组]获取取关分区列表失败\n${responseText}`);
resolve(uids)
}
}

View File

@ -1,6 +1,6 @@
const { createReadStream, createWriteStream } = require('fs')
const unzip = require('unzipper');
const { strToJson } = require("./Base")
const { strToJson, tooltip } = require("./Base")
const { HttpRequest } = require("./HttpRequest")
const { GITHUB_REPOSITORY } = process.env;
@ -32,11 +32,11 @@ const GihubAPI = {
resolve(data.artifacts[0])
} else {
resolve({})
console.log('之前无构件');
tooltip.log('之前无构件');
}
},
failure: err => {
console.log(err);
tooltip.log(err);
resolve({})
}
})
@ -66,15 +66,15 @@ const GihubAPI = {
const wtbs = createWriteStream('dyid.zip');
res.resStream.on('data', chuck => {
recv_length += chuck.length
console.log(`已收到:${recv_length} Bytes`)
tooltip.log(`已收到:${recv_length} Bytes`)
})
res.resStream.pipe(wtbs)
wtbs.on('finish', () => {
console.log('下载完成开始解压')
tooltip.log('下载完成开始解压')
createReadStream('dyid.zip').pipe(unzip.Extract({
path: 'lib'
}).on('close', () => {
console.log('解压完成')
tooltip.log('解压完成')
resolve(true)
}))
}).on('error', () => {
@ -83,7 +83,7 @@ const GihubAPI = {
})
},
failure: err => {
console.log(err);
tooltip.log(err);
resolve(false)
}
})
@ -114,7 +114,7 @@ const GihubAPI = {
}
},
failure: err => {
console.log(err);
tooltip.log(err);
resolve(true)
}
})

View File

@ -25,8 +25,8 @@ class Monitor extends Public {
* 初始化
*/
async init() {
if (config.model === '00') { console.log('已关闭所有转发行为'); return; }
if (GlobalVar.Lottery.length === 0) { console.log('抽奖信息为空'); return; }
if (config.model === '00') { Base.tooltip.log('已关闭所有转发行为'); return; }
if (GlobalVar.Lottery.length === 0) { Base.tooltip.log('抽奖信息为空'); return; }
this.tagid = await BiliAPI.checkMyPartition(); /* 检查关注分区 */
this.attentionList = await BiliAPI.getAttentionList(GlobalVar.myUID); /* 获取关注列表 */
await this.startLottery();
@ -46,10 +46,10 @@ class Monitor extends Public {
dyids.push(Lottery.dyid);
}
if (dyids.length) MyStorage.updateDyid(dyids.toString())
console.log('开始转发下一组动态');
Base.tooltip.log('开始转发下一组动态');
} else {
status = 1;
console.log('无未转发抽奖');
Base.tooltip.log('无未转发抽奖');
}
status ?
eventBus.emit('Turn_on_the_Monitor') : eventBus.emit('Turn_off_the_Monitor');
@ -190,7 +190,7 @@ class Monitor extends Public {
const send = () => BiliAPI.sendChat(rid, Base.getRandomStr(config.chat), type);
let [status, times] = [0, 0];
do {
if (times > 0) console.log('等一会儿再发送评论');
if (times > 0) Base.tooltip.log('等一会儿再发送评论');
times++;
status = await send();
if (status === 0) await Base.delay(5000 * 2 ** (times - 1))

View File

@ -13,9 +13,9 @@ const MyStorage = {
if (size_in_bytes) {
GihubAPI.downloadArtifacts(PAT, id).then(async status => {
if (status) {
console.log('存储初始化成功');
Base.tooltip.log('存储初始化成功');
} else {
console.log('存储初始化失败');
Base.tooltip.log('存储初始化失败');
await ifNotExistCreateFile('dyid.txt')
}
resolve()
@ -45,7 +45,7 @@ const MyStorage = {
resolve(status)
})
rs.on('error', err => {
console.log(err)
Base.tooltip.log(err)
resolve(status)
})
})
@ -55,7 +55,7 @@ const MyStorage = {
* @param {string} dyid
*/
updateDyid: (dyid) => {
console.log('写入已转发过的动态信息');
Base.tooltip.log('写入已转发过的动态信息');
return new Promise((resolve) => {
const ws = Base.writeDyidFile();
ws.write(dyid + ',', () => {
@ -63,7 +63,7 @@ const MyStorage = {
resolve()
})
ws.on('error', err => {
console.log(err)
Base.tooltip.log(err)
resolve()
})
});

View File

@ -37,7 +37,7 @@ class Public {
* @returns {Promise<{allModifyDynamicResArray: UsefulDynamicInfo[];offset: string}>} 获取前 `pages*12` 个动态信息
*/
async checkAllDynamic(hostuid, pages, time = 0, _offset = '0') {
console.log(`准备读取${pages}页自己的动态信息`);
Base.tooltip.log(`准备读取${pages}页自己的动态信息`);
const mDR = this.modifyDynamicRes,
getOneDynamicInfoByUID = BiliAPI.getOneDynamicInfoByUID,
curriedGetOneDynamicInfoByUID = Base.curryify(getOneDynamicInfoByUID); /* 柯里化的请求函数 */
@ -52,7 +52,7 @@ class Public {
let allModifyDynamicResArray = [];
let offset = _offset;
for (let i = 0; i < pages; i++) {
console.log(`正在读取第${i + 1}页动态`);
Base.tooltip.log(`正在读取第${i + 1}页动态`);
let OneDynamicInfo = await hadUidGetOneDynamicInfoByUID(offset);
const mDRdata = mDR(OneDynamicInfo);
if (mDRdata === null) {
@ -66,11 +66,11 @@ class Public {
nextinfo = mDRdata.nextinfo;
if (nextinfo.has_more === 0) {
offset = nextinfo.next_offset;
console.log(`成功读取${i + 1}页信息(已经是最后一页了故无法读取更多)`);
Base.tooltip.log(`成功读取${i + 1}页信息(已经是最后一页了故无法读取更多)`);
break;
} else {
allModifyDynamicResArray.push.apply(allModifyDynamicResArray, mDRArry);
i + 1 < pages ? console.log(`开始读取第${i + 2}页动态信息`) : console.log(`${pages}页信息全部成功读取完成`);
i + 1 < pages ? Base.tooltip.log(`开始读取第${i + 2}页动态信息`) : Base.tooltip.log(`${pages}页信息全部成功读取完成`);
offset = nextinfo.next_offset;
}
await Base.delay(time);
@ -88,7 +88,7 @@ class Public {
jsonRes = strToJson(res),
{ data } = jsonRes;
if (jsonRes.code !== 0) {
console.warn('获取动态数据出错,可能是访问太频繁');
Base.tooltip.warn('获取动态数据出错,可能是访问太频繁');
return null;
}
/* 字符串防止损失精度 */
@ -102,7 +102,7 @@ class Public {
*/
let array = [];
if (next.has_more === 0) {
console.log('动态数据读取完毕');
Base.tooltip.log('动态数据读取完毕');
} else {
/**
* 空动态无cards
@ -182,12 +182,12 @@ class Public {
hotdy = await BiliAPI.getHotDynamicInfoByTagID(tag_id),
modDR = self.modifyDynamicRes(hotdy);
if (modDR === null) return null;
console.log(`开始获取带话题#${tag_name}#的动态信息`);
console.log('成功获取热门动态');
Base.tooltip.log(`开始获取带话题#${tag_name}#的动态信息`);
Base.tooltip.log('成功获取热门动态');
let mDRdata = modDR.modifyDynamicResArray; /* 热门动态 */
let next_offset = modDR.nextinfo.next_offset;
for (let index = 0; index < 3; index++) {
console.log(`成功读取${index + 1}页动态`);
Base.tooltip.log(`成功读取${index + 1}页动态`);
const newdy = await BiliAPI.getOneDynamicInfoByTag(tag_name, next_offset);
const _modify = self.modifyDynamicRes(newdy);
if (_modify === null) return null;
@ -210,7 +210,7 @@ class Public {
hasOfficialLottery: o.hasOfficialLottery
};
})
console.log(`成功获取带话题#${tag_name}#的动态信息`);
Base.tooltip.log(`成功获取带话题#${tag_name}#的动态信息`);
return fomatdata
}
/**
@ -220,7 +220,7 @@ class Public {
* @returns {Promise<LotteryInfo[] | null>}
*/
async getLotteryInfoByUID(UID) {
console.log(`开始获取用户${UID}的动态信息`);
Base.tooltip.log(`开始获取用户${UID}的动态信息`);
const { allModifyDynamicResArray: aMDRA } = await this.checkAllDynamic(UID, 3, 500);
if (!aMDRA.length) return null;
const fomatdata = aMDRA.map(o => {
@ -238,7 +238,7 @@ class Public {
hasOfficialLottery: o.origin_hasOfficialLottery
}
}).filter(a => a.type === 0 ? false : true)
console.log(`成功获取用户${UID}的动态信息`);
Base.tooltip.log(`成功获取用户${UID}的动态信息`);
return fomatdata;
}
}

View File

@ -11,9 +11,9 @@ async function delDynamic () {
const { allModifyDynamicResArray, offset: _offset } = await Public.prototype.checkAllDynamic(GlobalVar.myUID, 1, 5 * 1000, offset);
offset = _offset;
if (index < 2) {
console.log(`跳过第${index + 1}页(12条)`);
Base.tooltip.log(`跳过第${index + 1}页(12条)`);
} else {
console.log(`开始读取第${index + 1}页(12条)`);
Base.tooltip.log(`开始读取第${index + 1}页(12条)`);
for (let index = 0; index < allModifyDynamicResArray.length; index++) {
const res = allModifyDynamicResArray[index];
const { type, dynamic_id } = res;
@ -23,14 +23,14 @@ async function delDynamic () {
}
await Base.delay(8e3);
}
console.log(`${index}页中的转发动态全部删除成功`)
Base.tooltip.log(`${index}页中的转发动态全部删除成功`)
}
if (offset === '0') break;
}
}
async function unFollow () {
const tagid = await checkMyPartition();
if (tagid === 0) { console.log('未能成功获取关注分区id'); return }
if (tagid === 0) { Base.tooltip.log('未能成功获取关注分区id'); return }
let rmup = [];
for (let index = 1; index < 42; index++) {
const uids = await BiliAPI.getPartitionUID(tagid, index);

View File

@ -35,8 +35,8 @@ function start() {
/* 注册事件 */
eventBus.on('Turn_on_the_Monitor', () => {
if (times.value() === GlobalVar.Lottery.length) {
console.log('所有动态转发完毕');
console.log('[运行结束]目前无抽奖信息,过一会儿再来看看吧');
Base.tooltip.log('所有动态转发完毕');
Base.tooltip.log('[运行结束]目前无抽奖信息,过一会儿再来看看吧');
times.clear();
createRandomDynamic()
resolve()
@ -47,7 +47,7 @@ function start() {
(new Monitor(isNaN(nlottery) ? lottery : nlottery)).init();
});
eventBus.on('Turn_off_the_Monitor', () => {
console.log('[运行结束]出现异常程序自动关闭');
Base.tooltip.log('[运行结束]出现异常程序自动关闭');
createRandomDynamic()
resolve()
})
@ -55,12 +55,12 @@ function start() {
eventBus.emit('Turn_on_the_Monitor');
} else {
setTimeout(() => {
console.log('运行时间超过Actions上限 - 6小时');
Base.tooltip.log('运行时间超过Actions上限 - 6小时');
eventBus.emit('Turn_off_the_Monitor')
}, MAX_TIME);
GihubAPI.hasLotteryRun().then(s => {
if (s) {
console.log("有冲突的工作流故终止此任务");
Base.tooltip.log("有冲突的工作流故终止此任务");
resolve()
} else {
eventBus.emit('Turn_on_the_Monitor');
@ -78,7 +78,7 @@ async function isMe() {
let MySession = await BiliAPI.getSessionInfo();
let desp = '';
if (MyAtInfo.length) {
console.log('<-- 正在检查at');
Base.tooltip.log('<-- 正在检查at');
MyAtInfo.forEach(async AtInfo => {
const { at_time, up_uname, business, source_content, url } = AtInfo
if ((Date.now() / 1000 - at_time) / 3600 >= 2) {
@ -91,10 +91,10 @@ async function isMe() {
desp += `[直达链接](${url}) \n\n`
desp += `--------------------- \n\n`
});
console.log('--> OK');
Base.tooltip.log('--> OK');
}
if (MySession.data.length) {
console.log('<-- 正在检查私信')
Base.tooltip.log('<-- 正在检查私信')
let session_t = '';
let max = 0;
do {
@ -122,13 +122,13 @@ async function isMe() {
}
max++
} while (MySession.has_more && max < 10);
console.log('--> OK');
Base.tooltip.log('--> OK');
}
if (desp) {
console.log(desp);
Base.tooltip.log(desp);
sendNotify('可能中奖了!', desp);
} else {
console.log("未中奖");
Base.tooltip.log("未中奖");
}
return;
}
@ -139,10 +139,10 @@ async function isMe() {
*/
async function checkCookie(num) {
if (await BiliAPI.getMyinfo()) {
console.log('成功登录');
Base.tooltip.log('成功登录');
return true;
} else {
console.log(`登录失败 COOKIE${num} 已失效 UID:${GlobalVar.myUID}`);
Base.tooltip.log(`登录失败 COOKIE${num} 已失效 UID:${GlobalVar.myUID}`);
sendNotify('动态抽奖出错-登录失败', `COOKIE${num} 已失效 UID:${GlobalVar.myUID}`)
return false;
}

View File

@ -1,3 +1,4 @@
const { tooltip } = require("./Base");
const { HttpRequest } = require("./HttpRequest");
// =======================================微信server酱通知设置区域===========================================
@ -173,26 +174,26 @@ function serverNotify(text, desp) {
try {
const data = JSON.parse(res.body);
if (data.errno === 0) {
console.log('server酱发送通知消息成功\n')
tooltip.log('server酱发送通知消息成功\n')
} else if (data.errno === 1024) {
// 一分钟内发送相同的内容会触发
console.log(`server酱发送通知消息异常: ${data.errmsg}\n`)
tooltip.log(`server酱发送通知消息异常: ${data.errmsg}\n`)
} else {
console.log(`server酱发送通知消息异常\n${JSON.stringify(data)}`)
tooltip.log(`server酱发送通知消息异常\n${JSON.stringify(data)}`)
}
} catch (error) {
console.log(error);
tooltip.log(error);
} finally {
resolve()
}
},
failure: err => {
console.log('发送通知调用API失败\n')
tooltip.log('发送通知调用API失败\n')
throw new Error(err);
}
})
} else {
console.log('您未提供server酱的SCKEY取消微信推送消息通知\n');
tooltip.log('您未提供server酱的SCKEY取消微信推送消息通知\n');
resolve()
}
})
@ -218,26 +219,26 @@ function serverNotifyTurbo(text, desp) {
try {
const data = JSON.parse(res.body);
if (data.errno === 0) {
console.log('server酱(Turbo版)发送通知消息成功\n')
tooltip.log('server酱(Turbo版)发送通知消息成功\n')
} else if (data.errno === 1024) {
// 一分钟内发送相同的内容会触发
console.log(`server酱(Turbo版)发送通知消息异常: ${data.errmsg}\n`)
tooltip.log(`server酱(Turbo版)发送通知消息异常: ${data.errmsg}\n`)
} else {
console.log(`server酱(Turbo版)发送通知消息异常\n${JSON.stringify(data)}`)
tooltip.log(`server酱(Turbo版)发送通知消息异常\n${JSON.stringify(data)}`)
}
} catch (error) {
console.log(error);
tooltip.log(error);
} finally {
resolve()
}
},
failure: err => {
console.log('发送通知调用API失败\n')
tooltip.log('发送通知调用API失败\n')
throw new Error(err);
}
})
} else {
console.log('您未提供server酱(Turbo版)的SCKEY取消微信推送消息通知\n');
tooltip.log('您未提供server酱(Turbo版)的SCKEY取消微信推送消息通知\n');
resolve()
}
})
@ -275,25 +276,25 @@ function coolPush(text, desp) {
try {
const data = JSON.parse(res.body);
if (data.code === 200) {
console.log(`酷推发送${pushMode(QQ_MODE)}通知消息成功\n`)
tooltip.log(`酷推发送${pushMode(QQ_MODE)}通知消息成功\n`)
} else if (data.code === 400) {
console.log(`QQ酷推(Cool Push)发送${pushMode(QQ_MODE)}推送失败:${data}\n`)
tooltip.log(`QQ酷推(Cool Push)发送${pushMode(QQ_MODE)}推送失败:${data}\n`)
} else {
console.log(`酷推推送异常: ${data.msg}`);
tooltip.log(`酷推推送异常: ${data.msg}`);
}
} catch (error) {
console.log(error);
tooltip.log(error);
} finally {
resolve()
}
},
failure: err => {
console.log(`发送${pushMode(QQ_MODE)}通知调用API失败\n`)
tooltip.log(`发送${pushMode(QQ_MODE)}通知调用API失败\n`)
throw new Error(err);
}
})
} else {
console.log('您未提供酷推的SKEY取消QQ推送消息通知\n');
tooltip.log('您未提供酷推的SKEY取消QQ推送消息通知\n');
resolve()
}
})
@ -319,24 +320,24 @@ function barkNotify(text, desp, params = {}) {
try {
const data = JSON.parse(res.body);
if (data.code === 200) {
console.log('Bark APP发送通知消息成功\n')
tooltip.log('Bark APP发送通知消息成功\n')
} else {
console.log(`${data.message}\n`);
tooltip.log(`${data.message}\n`);
}
} catch (error) {
console.log(error);
tooltip.log(error);
} finally {
resolve()
}
},
failure: err => {
console.log('Bark APP发送通知调用API失败\n');
tooltip.log('Bark APP发送通知调用API失败\n');
resolve();
throw new Error(err)
}
})
} else {
console.log('您未提供Bark的APP推送BARK_PUSH取消Bark推送消息通知\n');
tooltip.log('您未提供Bark的APP推送BARK_PUSH取消Bark推送消息通知\n');
resolve()
}
})
@ -365,20 +366,20 @@ function tgBotNotify(text, desp) {
try {
const data = JSON.parse(res.body);
if (data.ok) {
console.log('Telegram发送通知消息完成。\n')
tooltip.log('Telegram发送通知消息完成。\n')
} else if (data.error_code === 400) {
console.log('请主动给bot发送一条消息并检查接收用户ID是否正确。\n')
tooltip.log('请主动给bot发送一条消息并检查接收用户ID是否正确。\n')
} else if (data.error_code === 401) {
console.log('Telegram bot token 填写错误。\n')
tooltip.log('Telegram bot token 填写错误。\n')
}
} catch (error) {
console.log(error);
tooltip.log(error);
} finally {
resolve()
}
},
failure: err => {
console.log('telegram发送通知消息失败\n')
tooltip.log('telegram发送通知消息失败\n')
resolve()
throw new Error(err)
}
@ -391,7 +392,7 @@ function tgBotNotify(text, desp) {
}
HttpRequest(options)
} else {
console.log('您未提供telegram机器人推送所需的TG_BOT_TOKEN和TG_USER_ID取消telegram推送消息通知\n');
tooltip.log('您未提供telegram机器人推送所需的TG_BOT_TOKEN和TG_USER_ID取消telegram推送消息通知\n');
resolve()
}
})
@ -430,18 +431,18 @@ function ddBotNotify(text, desp) {
try {
const data = JSON.parse(res.body);
if (data.errcode === 0) {
console.log('钉钉发送通知消息完成。\n')
tooltip.log('钉钉发送通知消息完成。\n')
} else {
console.log(`${data.errmsg}\n`)
tooltip.log(`${data.errmsg}\n`)
}
} catch (e) {
console.log(e);
tooltip.log(e);
} finally {
resolve();
}
},
failure: err => {
console.log('钉钉发送通知消息失败!!\n')
tooltip.log('钉钉发送通知消息失败!!\n')
throw new Error(err);
}
})
@ -469,24 +470,24 @@ function ddBotNotify(text, desp) {
try {
const data = JSON.parse(res.body);
if (data.errcode === 0) {
console.log('钉钉发送通知消息完成。\n')
tooltip.log('钉钉发送通知消息完成。\n')
} else {
console.log(`${data.errmsg}\n`)
tooltip.log(`${data.errmsg}\n`)
}
} catch (e) {
console.log(e);
tooltip.log(e);
} finally {
resolve();
}
},
failure: err => {
console.log('钉钉发送通知消息失败!!\n');
tooltip.log('钉钉发送通知消息失败!!\n');
resolve();
throw new Error(err)
}
})
} else {
console.log('您未提供钉钉机器人推送所需的DD_BOT_TOKEN或者DD_BOT_SECRET取消钉钉推送消息通知\n');
tooltip.log('您未提供钉钉机器人推送所需的DD_BOT_TOKEN或者DD_BOT_SECRET取消钉钉推送消息通知\n');
resolve()
}
})
@ -515,24 +516,24 @@ function qywxBotNotify(text, desp) {
try {
const data = JSON.parse(res.body);
if (data.errcode === 0) {
console.log('企业微信发送通知消息完成。\n');
tooltip.log('企业微信发送通知消息完成。\n');
} else {
console.log(`${data.errmsg}\n`);
tooltip.log(`${data.errmsg}\n`);
}
} catch (e) {
console.log(e);
tooltip.log(e);
} finally {
resolve();
}
},
failure: err => {
console.log('企业微信发送通知消息失败!!\n');
tooltip.log('企业微信发送通知消息失败!!\n');
resolve();
throw new Error(err)
}
})
} else {
console.log('您未提供企业微信机器人推送所需的QYWX_KEY取消企业微信推送消息通知\n');
tooltip.log('您未提供企业微信机器人推送所需的QYWX_KEY取消企业微信推送消息通知\n');
resolve();
}
});
@ -544,7 +545,7 @@ function iGotNotify(text, desp, params = {}) {
// 校验传入的IGOT_PUSH_KEY是否有效
const IGOT_PUSH_KEY_REGX = new RegExp("^[a-zA-Z0-9]{24}$")
if (!IGOT_PUSH_KEY_REGX.test(IGOT_PUSH_KEY)) {
console.log('您所提供的IGOT_PUSH_KEY无效\n')
tooltip.log('您所提供的IGOT_PUSH_KEY无效\n')
resolve()
return
}
@ -567,24 +568,24 @@ function iGotNotify(text, desp, params = {}) {
try {
const data = JSON.parse(res.body);
if (data.ret === 0) {
console.log('iGot发送通知消息成功\n')
tooltip.log('iGot发送通知消息成功\n')
} else {
console.log(`iGot发送通知消息失败${data.errMsg}\n`)
tooltip.log(`iGot发送通知消息失败${data.errMsg}\n`)
}
} catch (e) {
console.log(e);
tooltip.log(e);
} finally {
resolve();
}
},
failure: err => {
console.log('发送通知调用API失败\n')
tooltip.log('发送通知调用API失败\n')
resolve();
throw new Error(err)
}
})
} else {
console.log('您未提供iGot的推送IGOT_PUSH_KEY取消iGot推送消息通知\n');
tooltip.log('您未提供iGot的推送IGOT_PUSH_KEY取消iGot推送消息通知\n');
resolve()
}
})
@ -613,24 +614,24 @@ function pushPlusNotify(text, desp) {
try {
const data = JSON.parse(res.body);
if (data.code === 200) {
console.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息完成。\n`)
tooltip.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息完成。\n`)
} else {
console.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息失败:${data.msg}\n`)
tooltip.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息失败:${data.msg}\n`)
}
} catch (e) {
console.log(e);
tooltip.log(e);
} finally {
resolve();
}
},
failure: err => {
console.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息失败!!\n`)
tooltip.log(`push+发送${PUSH_PLUS_USER ? '一对多' : '一对一'}通知消息失败!!\n`)
resolve();
throw new Error(err)
}
})
} else {
console.log('您未提供push+推送所需的PUSH_PLUS_TOKEN取消push+推送消息通知\n');
tooltip.log('您未提供push+推送所需的PUSH_PLUS_TOKEN取消push+推送消息通知\n');
resolve()
}
})

11
main.js
View File

@ -1,10 +1,11 @@
const { tooltip } = require("./lib/Base");
const { setVariable } = require("./lib/setVariable");
const { NUMBER, CLEAR, COOKIE, PAT, LOCALLAUNCH } = process.env;
((async () => {
if (typeof COOKIE === 'string' && COOKIE.length > 10) {
if (!LOCALLAUNCH && !PAT) { console.log('请查看README文件, 填入相应的PAT'); return; }
if (!LOCALLAUNCH && !PAT) { tooltip.log('请查看README文件, 填入相应的PAT'); return; }
await setVariable(COOKIE);
const { start, isMe, checkCookie } = require("./lib/lottery-in-nodejs");
const { clear } = require("./lib/clear");
@ -13,18 +14,18 @@ const { NUMBER, CLEAR, COOKIE, PAT, LOCALLAUNCH } = process.env;
switch (process.argv.slice(2)[0]) {
case 'start':
await setVariable('', PAT);
console.log('开始参与抽奖');
tooltip.log('开始参与抽奖');
await start();
break;
case 'check':
console.log('检查是否中奖');
tooltip.log('检查是否中奖');
await isMe();
break;
case 'clear':
if (CLEAR === 'true') {
console.log('开始清理动态');
tooltip.log('开始清理动态');
await clear();
console.log('清理动态完毕');
tooltip.log('清理动态完毕');
}
break;
default: