2
0
mirror of https://github.com/ctrlcvs/xiaoyao-cvs-plugin.git synced 2024-12-23 11:40:51 +08:00
xiaoyao-cvs-plugin/apps/user.js

132 lines
3.5 KiB
JavaScript
Raw Normal View History

2022-08-16 23:24:54 +08:00
import MihoYoApi from "../model/mys/mihoyo-api.js"
import utils from '../model/mys/utils.js';
import promiseRetry from 'promise-retry';
import {
Cfg,
Data
} from "../components/index.js";
import moment from 'moment';
2022-08-31 23:26:24 +08:00
import lodash from 'lodash';
2022-08-16 23:24:54 +08:00
import Common from "../components/Common.js";
import {
isV3
} from '../components/Changelog.js';
import gsCfg from '../model/gsCfg.js';
import fs from "fs";
import {
segment
} from "oicq";
import YAML from 'yaml'
import User from "../model/user.js"
export const rule = {
userInfo: {
reg: "^#*(ck|stoken|cookie|cookies|签到)查询$",
describe: "用户个人信息查询"
},
2022-08-31 23:26:24 +08:00
gclog: {
reg: "^#*更新抽卡记录$",
describe: "更新抽卡记录"
}
2022-08-16 23:24:54 +08:00
}
2022-08-31 23:26:24 +08:00
const _path = process.cwd();
export async function userInfo(e, {
render
}) {
let user = new User(e);
2022-08-16 23:24:54 +08:00
e.reply("正在获取角色信息请稍等...")
2022-08-31 23:26:24 +08:00
let sumData = await user.getCkData()
2022-08-16 23:24:54 +08:00
let week = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
let day = moment(new Date()).format("yyyy年MM月DD日 HH:mm") + " " + week[new Date().getDay()];
2022-08-31 23:26:24 +08:00
if (Object.keys(sumData).length == 0) {
2022-08-16 23:44:24 +08:00
return true;
}
2022-08-31 23:26:24 +08:00
let ck = "";
if (e.cookie) {
ck = user.getCookieMap(e.cookie);
ck = ck.get("ltuid")
2022-08-16 23:44:24 +08:00
}
2022-08-16 23:24:54 +08:00
return await Common.render(`user/userInfo`, {
uid: e.user_id,
2022-08-31 23:26:24 +08:00
ltuid: ck || e.user_id,
save_id: e.user_id,
2022-08-16 23:24:54 +08:00
day,
sumData
}, {
e,
render,
scale: 1.2
})
return true;
2022-08-31 23:26:24 +08:00
}
2022-09-01 22:52:29 +08:00
let configData=gsCfg.getfileYaml(`${_path}/plugins/xiaoyao-cvs-plugin/config/`, "config");
2022-08-31 23:26:24 +08:00
export async function gclog(e) {
let user = new User(e);
await user.cookie(e)
let redis_Data = await redis.get(`xiaoyao:gclog:${e.user_id}`);
if(redis_Data){
let time=redis_Data*1-Math.floor(Date.now()/1000);
e.reply(`请求过快,请${time}秒后重试...`);
return true;
}
2022-08-31 23:26:24 +08:00
let miHoYoApi = new MihoYoApi(e);
2022-09-01 22:52:29 +08:00
if(!e.cookies||e.cookies.includes("undefined")){
e.reply("请先绑定stoken")
return true;
}
2022-08-31 23:26:24 +08:00
let kkbody = await miHoYoApi.getbody("原神");
const objData = await miHoYoApi.getUserInfo(kkbody)
let data = objData.data
2022-09-01 09:40:30 +08:00
e.region = e.uid[0]*1 == 5 ? "cn_qd01" : "cn_gf01"
2022-08-31 23:26:24 +08:00
let authkeyrow = await miHoYoApi.authkey(data);
2022-08-31 23:43:11 +08:00
if(!authkeyrow?.data){
e.reply("authkey获取失败"+authkeyrow.message)
return true;
}
2022-08-31 23:26:24 +08:00
let authkey=authkeyrow.data["authkey"]
let postdata = {
'authkey_ver': '1',
'sign_type': '2',
'auth_appid': 'webview_gacha',
'init_type': '301',
'gacha_id': 'fecafa7b6560db5f3182222395d88aaa6aaac1bc',
'timestamp': Math.floor(Date.now() / 1000), //当前时间搓
'lang': 'zh-cn',
'device_type': 'mobile',
'plat_type': 'ios',
'region': e.region,
'authkey': encodeURIComponent(authkey),
'game_biz': 'hk4e_cn',
'gacha_type': "301",
'page': 1,
'size': 5,
'end_id': 0,
}
let url = `https://hk4e-api.mihoyo.com/event/gacha_info/api/getGachaLog?`
for (let item of Object.keys(postdata)) {
url += `${item}=${postdata[item]}&`
}
2022-09-01 09:40:30 +08:00
e.msg= url.substring(0, url.length - 1);
let sendMsg=[];
e.reply("抽卡记录获取中请稍等...")
e._reply=e.reply;
e.reply = (msg) => {
sendMsg.push(msg)
}
2022-08-31 23:26:24 +08:00
if(isV3){
let gclog= (await import(`file:///${_path}/plugins/genshin/model/gachaLog.js`)).default
await (new gclog(e)).logUrl()
} else {
let {
bing
} = (await import(`file:///${_path}/lib/app/gachaLog.js`))
e.isPrivate = true;
await bing(e)
}
2022-09-04 22:34:33 +08:00
await utils.replyMake(e,sendMsg,1)
2022-09-01 22:52:29 +08:00
let time=(configData.gclogEx||5)*60
redis.set(`xiaoyao:gclog:${e.user_id}`, Math.floor(Date.now()/1000)+time, { //把色图链接写入缓存防止一直色色
EX: time
});
2022-08-31 23:26:24 +08:00
return true;
}