2
0
mirror of https://github.com/ctrlcvs/xiaoyao-cvs-plugin.git synced 2024-12-23 03:20:52 +08:00
xiaoyao-cvs-plugin/apps/Note.js
2022-06-25 10:03:05 +08:00

224 lines
5.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import {
segment
} from "oicq";
import fetch from "node-fetch";
import Common from "../components/Common.js";
import fs from "fs";
import format from "date-format";
import puppeteer from "puppeteer";
import common from "../../../lib/common.js";
import lodash from "lodash";
import {
Cfg
} from "../components/index.js";
// import MysApi from "../components/MysApi.js"
import {
getUrl,
getHeaders
} from "../../../lib/app/mysApi.js";
const _path = process.cwd();
//#体力
export async function Note(e, {
render
}) {
if (!Cfg.get("sys.Note")) {
return false;
}
let cookie, uid;
if (NoteCookie[e.user_id]) {
cookie = NoteCookie[e.user_id].cookie;
uid = NoteCookie[e.user_id].uid;
} else if (BotConfig.dailyNote && BotConfig.dailyNote[e.user_id]) {
cookie = BotConfig.dailyNote[e.user_id].cookie;
uid = BotConfig.dailyNote[e.user_id].uid;
} else {
e.reply(`尚未配置,无法查询体力\n配置教程:${BotConfig.cookieDoc}`);
return true;
}
const response = await getDailyNote(uid, cookie);
if (!response.ok) {
e.reply("米游社接口错误");
return true;
}
const res = await response.json();
if (res.retcode == 10102) {
if (!e.openDailyNote) {
e.openDailyNote = true;
await openDailyNote(cookie); //自动开启
dailyNote(e);
} else {
e.reply("请先开启实时便笺数据展示");
}
return true;
}
if (res.retcode != 0) {
if (res.message == "Please login") {
Bot.logger.mark(`体力cookie已失效`);
e.reply(`体力cookie已失效请重新配置\n注意退出米游社登录cookie将会失效`);
if (NoteCookie[e.user_id]) {
await MysUser.delNote(NoteCookie[e.user_id]);
delete NoteCookie[e.user_id];
saveJson();
}
} else {
e.reply(`体力查询错误:${res.message}`);
Bot.logger.mark(`体力查询错误:${JSON.stringify(res)}`);
}
return true;
}
//redis保存uid
redis.set(`genshin:uid:${e.user_id}`, uid, {
EX: 2592000
});
//更新
if (NoteCookie[e.user_id]) {
NoteCookie[e.user_id].maxTime = new Date().getTime() + res.data.resin_recovery_time * 1000;
saveJson();
}
let data = res.data;
//推送任务
if (e.isTask && data.current_resin < e.sendResin) {
return;
}
if (e.isTask) {
Bot.logger.mark(`体力推送:${e.user_id}`);
}
let nowDay = format("dd", new Date());
let resinMaxTime;
if (data.resin_recovery_time > 0) {
resinMaxTime = new Date().getTime() + data.resin_recovery_time * 1000;
let maxDate = new Date(resinMaxTime);
resinMaxTime = format("hh:mm", maxDate);
if (format("dd", maxDate) != nowDay) {
resinMaxTime = `明天 ${resinMaxTime}`;
} else {
resinMaxTime = ` ${resinMaxTime}`;
}
}
for (let val of data.expeditions) {
// console.log(val.remained_time)
if (val.remained_time > 0) {
val.remained_time = new Date().getTime() + val.remained_time * 1000;
let remainedDate = new Date(val.remained_time);
val.remained_time = format("hh:mm", remainedDate);
if (format("dd", remainedDate) != nowDay) {
val.remained_time = `明天 ${val.remained_time}`;
} else {
val.remained_time = ` ${val.remained_time}`;
}
}
}
let remained_time = "";
if (data.expeditions && data.expeditions.length >= 1) {
remained_time = lodash.map(data.expeditions, "remained_time");
remained_time = lodash.min(remained_time);
if (remained_time > 0) {
remained_time = new Date().getTime() + remained_time * 1000;
let remainedDate = new Date(remained_time);
remained_time = format("hh:mm", remainedDate);
if (format("dd", remainedDate) != nowDay) {
remained_time = `明天 ${remained_time}`;
} else {
remained_time = ` ${remained_time}`;
}
}
}
let coinTime = "";
if (data.home_coin_recovery_time > 0) {
let coinDay = Math.floor(data.home_coin_recovery_time / 3600 / 24);
let coinHour = Math.floor((data.home_coin_recovery_time / 3600) % 24);
let coinMin = Math.floor((data.home_coin_recovery_time / 60) % 60);
if (coinDay > 0) {
coinTime = `${coinDay}${coinHour}小时${coinMin}分钟`;
} else {
let coinDate = new Date(new Date().getTime() + data.home_coin_recovery_time * 1000);
if (format("dd", coinDate) != nowDay) {
coinTime = `明天 ${format("hh:mm", coinDate)}`;
} else {
coinTime = format("hh:mm", coinDate);
}
}
}
let day = format("MM-dd hh:mm", new Date());
let week = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
day += " " + week[new Date().getDay()];
//参量质变仪
if (data?.transformer?.obtained) {
data.transformer.reached = data.transformer.recovery_time.reached;
let recovery_time = "";
if (data.transformer.recovery_time.Day > 0) {
recovery_time += `${data.transformer.recovery_time.Day}`;
}
if (data.transformer.recovery_time.Hour > 0) {
recovery_time += `${data.transformer.recovery_time.Hour}小时`;
}
if (data.transformer.recovery_time.Minute > 0) {
recovery_time += `${data.transformer.recovery_time.Minute}分钟`;
}
data.transformer.recovery_time = recovery_time;
}
var image = fs.readdirSync(`./plugins/xiaoyao-cvs-plugin/resources/dailyNote/background_image`);
var list_img = [];
for (let val of image) {
list_img.push(val)
}
var imgs = list_img.length == 1 ? list_img[0] : list_img[lodash.random(0, list_img.length - 1)];
return await Common.render("dailyNote/dailyNote", {
save_id: uid,
uid: uid,
resinMaxTime,
remained_time,
coinTime,
imgs,
day,
...data,
}, {
e,
render,
scale: 1.2
})
return true;
}
async function getDailyNote(uid, cookie) {
let {
url,
headers,
query,
body
} = getUrl("dailyNote", uid);
headers.Cookie = cookie;
const response = await fetch(url, {
method: "get",
headers
});
return response;
}
export async function saveJson() {
let path = "data/NoteCookie/NoteCookie.json";
fs.writeFileSync(path, JSON.stringify(NoteCookie, "", "\t"));
}