diff --git a/plugins/genshin/apps/calculator.js b/plugins/genshin/apps/calculator.js index 9766fee..084224e 100644 --- a/plugins/genshin/apps/calculator.js +++ b/plugins/genshin/apps/calculator.js @@ -66,18 +66,7 @@ export class calculator extends plugin { if (!data) return /** 生成图片 */ - let url = this.srHead('calculator', data) - let img = await puppeteer.screenshot(url, data) + let img = await puppeteer.screenshot(`${data.srtempFile}calculator`, data) if (img) await this.reply(img) } - srHead = (url, data) => { - let name = url - if (this.e.isSr) { - name = `StarRail/${url}` - data.pluResPath = `${this._path}/plugins/genshin/resources/StarRail/` - data.tplFile = `./plugins/genshin/resources/StarRail/html/${url}/${url}.html` - data.headStyle = `` - } - return name - } } diff --git a/plugins/genshin/apps/dailyNote.js b/plugins/genshin/apps/dailyNote.js index f139103..4224e50 100644 --- a/plugins/genshin/apps/dailyNote.js +++ b/plugins/genshin/apps/dailyNote.js @@ -6,7 +6,7 @@ import puppeteer from '../../../lib/puppeteer/puppeteer.js' gsCfg.cpCfg('mys', 'set') export class dailyNote extends plugin { - constructor () { + constructor() { super({ name: '体力查询', dsc: '体力查询', @@ -22,12 +22,12 @@ export class dailyNote extends plugin { } /** #体力 */ - async note () { + async note() { let data = await Note.get(this.e) if (!data) return /** 生成图片 */ - let img = await puppeteer.screenshot('dailyNote', data) + let img = await puppeteer.screenshot(`${data.srtempFile}dailyNote`, data) if (img) await this.reply(img) } diff --git a/plugins/genshin/apps/gcLog.js b/plugins/genshin/apps/gcLog.js index dd6e6b3..9da2d80 100644 --- a/plugins/genshin/apps/gcLog.js +++ b/plugins/genshin/apps/gcLog.js @@ -55,12 +55,11 @@ export class gcLog extends plugin { }) this.androidUrl = 'docs.qq.com/doc/DUWpYaXlvSklmVXlX' - this._path = process.cwd().replace(/\\/g, '/') } async init () { - let file = ['./data/gachaJson','./data/srJson','./temp/html/StarRail'] - for(let i of file){ + let file = ['./data/gachaJson', './data/srJson', './temp/html/StarRail'] + for (let i of file) { if (!fs.existsSync(i)) { fs.mkdirSync(i) } @@ -98,8 +97,8 @@ export class gcLog extends plugin { let data = await new GachaLog(this.e).logUrl() if (!data) return - let url = this.srHead('gachaLog', data) - let img = await puppeteer.screenshot(url, data) + + let img = await puppeteer.screenshot(`${data.srtempFile}gachaLog`, data) if (img) await this.reply(img) } @@ -121,13 +120,8 @@ export class gcLog extends plugin { if (!data) return false if (typeof data != 'object') return - let url='gachaLog' - if(this.e.isSr){ - url ='StarRail/gachaLog' - data.tplFile = './plugins/genshin/resources/StarRail/html/gachaLog/gachaLog.html' - data.headStyle = `` - } - let img = await puppeteer.screenshot(url, data) + + let img = await puppeteer.screenshot(`${data.srtempFile}gachaLog`, data) if (img) await this.reply(img) } @@ -211,6 +205,7 @@ export class gcLog extends plugin { await this.e.reply(segment.image(`file:///${_path}/resources/logHelp/记录帮助-苹果.png`)) } } + srHead = (url, data) => { let name = url if (this.e.isSr) { @@ -220,6 +215,7 @@ export class gcLog extends plugin { } return name } + async logCount () { let data = await new LogCount(this.e).count() if (!data) return diff --git a/plugins/genshin/apps/ledger.js b/plugins/genshin/apps/ledger.js index 2ea3640..8625f44 100644 --- a/plugins/genshin/apps/ledger.js +++ b/plugins/genshin/apps/ledger.js @@ -4,84 +4,74 @@ import puppeteer from '../../../lib/puppeteer/puppeteer.js' import fs from 'node:fs' export class ledger extends plugin { - constructor () { + constructor() { super({ name: '札记查询', - dsc: '原神体米游社札记原神查询', + dsc: '米游社札记·开拓月历查询', event: 'message', priority: 300, rule: [ { - reg: '^(#原石|#*札记)([0-9]|[一二两三四五六七八九十]+)*月*$', + reg: '^(#原石|#*札记|#*(星铁)?星琼)([0-9]|[一二两三四五六七八九十]+)*月*$', fnc: 'ledger' }, { - reg: '^(#签到|#*米游社(自动)*签到)$', - fnc: 'sign' - }, - { - reg: '^#原石任务$', + reg: '^#(原石|(星铁)?星琼)任务$', permission: 'master', fnc: 'ledgerTask' }, { - reg: '^#*(原石|札记)统计$', + reg: '^#*(原石|札记|(星铁)?星琼)统计$', fnc: 'ledgerCount' }, { - reg: '^#*(去年|今年|\\d{4}年)(原石|札记)统计$', + reg: '^#*(去年|今年|\\d{4}年)(原石|札记|(星铁)?星琼)统计$', fnc: 'ledgerCountHistory' } ] }) - - // this.set = gsCfg.getConfig('mys', 'set') - - // /** 定时任务 */ - // this.task = { - // cron: this.set.signTime, - // name: '米游社签到任务', - // fnc: () => this.signTask() - // } } - async init () { - if (!fs.existsSync('./data/NoteData')) { - fs.mkdirSync('./data/NoteData') + async init() { + let file = ['./data/NoteData', './data/SR_NoteData'] + for (let i of file) { + if (!fs.existsSync(i)) { + fs.mkdirSync(i) + } } } /** #原石札记 */ - async ledger () { + async ledger() { let data = await new Ledger(this.e).get() if (!data) return /** 生成图片 */ - let img = await puppeteer.screenshot('ledger', data) + let img = await puppeteer.screenshot(`${data.srtempFile}ledger`, data) if (img) await this.reply(img) } /** 原石任务 */ - async ledgerTask () { + async ledgerTask() { let ledger = new Ledger(this.e) await ledger.ledgerTask(!!this?.e?.msg) } - async ledgerCount () { + async ledgerCount() { let data = await new Ledger(this.e).ledgerCount() if (!data) return /** 生成图片 */ - let img = await puppeteer.screenshot('ledgerCount', data) + let img = await puppeteer.screenshot(`${data.srtempFile}ledgerCount`, data) if (img) await this.reply(img) } - async ledgerCountHistory () { + async ledgerCountHistory() { let data = await new Ledger(this.e).ledgerCountHistory() if (!data) return /** 生成图片 */ - let img = await puppeteer.screenshot('ledgerCount', data) + let img = await puppeteer.screenshot(`${data.srtempFile}ledgerCount`, data) if (img) await this.reply(img) } } diff --git a/plugins/genshin/model/base.js b/plugins/genshin/model/base.js index 57fcd43..cde7dbf 100644 --- a/plugins/genshin/model/base.js +++ b/plugins/genshin/model/base.js @@ -20,13 +20,25 @@ export default class base { get screenData() { let headImg = '林尼' + if (this.e?.isSr) + return { + saveId: this.userId, + cwd: this._path, + tplFile: `./plugins/genshin/resources/StarRail/html/${this.model}/${this.model}.html`, + /** 绝对路径 */ + pluResPath: `${this._path}/plugins/genshin/resources/StarRail/`, + headStyle: ``, + srtempFile: 'StarRail/' + } + return { saveId: this.userId, cwd: this._path, tplFile: `./plugins/genshin/resources/html/${this.model}/${this.model}.html`, /** 绝对路径 */ pluResPath: `${this._path}/plugins/genshin/resources/`, - headStyle: `` + headStyle: ``, + srtempFile: '' } } } diff --git a/plugins/genshin/model/ledger.js b/plugins/genshin/model/ledger.js index 9589286..ff1fcf5 100644 --- a/plugins/genshin/model/ledger.js +++ b/plugins/genshin/model/ledger.js @@ -1,4 +1,5 @@ import base from './base.js' +import GsCfg from './gsCfg.js' import MysInfo from './mys/mysInfo.js' import MysApi from './mys/mysApi.js' import lodash from 'lodash' @@ -7,12 +8,26 @@ import fs from 'node:fs' import common from '../../../lib/common/common.js' export default class Ledger extends base { - constructor (e) { + constructor(e) { super(e) + this.e = e this.model = 'ledger' + if (this.e.msg?.includes('星琼')) + this.e.isSr = true + + this.color = ['#73a9c6', '#d56565', '#70b2b4', '#bd9a5a', '#739970', '#7a6da7', '#597ea0'] + this.action = { + "other": 0, + "adventure_reward": 1, + "space_reward": 2, + "daily_reward": 3, + "abyss_reward": 4, + "mail_reward": 5, + "event_reward": 6 + } } - async get () { + async get() { this.getMonth() if (!this.month) return @@ -27,8 +42,8 @@ export default class Ledger extends base { return data } - getMonth () { - let month = this.e.msg.replace(/#|原石|月|札记/g, '') + getMonth() { + let month = this.e.msg.replace(/#|原石|月|札记|星铁|星琼/g, '') let NowMonth = Number(moment().month()) + 1 let monthData = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'] if (month) { @@ -59,74 +74,102 @@ export default class Ledger extends base { if ((NowMonth >= 3 && month > NowMonth) || (NowMonth < 3 && month > NowMonth && month <= 9 + month)) { month = NowMonth } - - this.NowMonth = NowMonth - this.month = month + if (this.e.isSr) { + this.NowMonth = moment().year().toString() + (NowMonth < 10 ? '0' : '') + NowMonth.toString() + this.month = moment().year().toString() + (month < 10 ? '0' : '') + month.toString() + this.srmonth = month + } else { + this.NowMonth = NowMonth + this.month = month + } } - dealData (ledgerInfo) { + dealData(ledgerInfo) { let day if (this.month == this.NowMonth) { - day = `${this.month}月${moment().date()}号` + day = `${this[this.e.isSr ? 'srmonth' : 'month']}月${moment().date()}号` } else { - day = `${this.month}月` + day = `${this[this.e.isSr ? 'srmonth' : 'month']}月` } - ledgerInfo.month_data.gacha = (ledgerInfo.month_data.current_primogems / 160).toFixed(0) - ledgerInfo.month_data.last_gacha = (ledgerInfo.month_data.last_primogems / 160).toFixed(0) - if (ledgerInfo.month_data.current_primogems > 10000) { - ledgerInfo.month_data.current_primogems = (ledgerInfo.month_data.current_primogems / 10000).toFixed(2) + ' w' + let gacha = this.e.isSr ? 'current_hcoin' : 'current_primogems' + let last_gacha = this.e.isSr ? 'last_hcoin' : 'last_primogems' + let mora = this.e.isSr ? 'current_rails_pass' : 'current_mora' + let last_mora = this.e.isSr ? 'last_rails_pass' : 'last_mora' + + ledgerInfo.month_data.gacha = (ledgerInfo.month_data[gacha] / 160).toFixed(0) + ledgerInfo.month_data.last_gacha = (ledgerInfo.month_data[last_gacha] / 160).toFixed(0) + if (ledgerInfo.month_data[gacha] > 10000) { + ledgerInfo.month_data[gacha] = (ledgerInfo.month_data[gacha] / 10000).toFixed(2) + ' w' } - if (ledgerInfo.month_data.last_primogems > 10000) { - ledgerInfo.month_data.last_primogems = (ledgerInfo.month_data.last_primogems / 10000).toFixed(2) + ' w' + if (ledgerInfo.month_data[last_gacha] > 10000) { + ledgerInfo.month_data[last_gacha] = (ledgerInfo.month_data[last_gacha] / 10000).toFixed(2) + ' w' } - if (ledgerInfo.month_data.current_mora > 10000) { - ledgerInfo.month_data.current_mora = (ledgerInfo.month_data.current_mora / 10000).toFixed(1) + ' w' + if (ledgerInfo.month_data[mora] > 10000) { + ledgerInfo.month_data[mora] = (ledgerInfo.month_data[mora] / 10000).toFixed(1) + ' w' } - if (ledgerInfo.month_data.last_mora > 10000) { - ledgerInfo.month_data.last_mora = (ledgerInfo.month_data.last_mora / 10000).toFixed(1) + ' w' + if (ledgerInfo.month_data[last_mora] > 10000) { + ledgerInfo.month_data[last_mora] = (ledgerInfo.month_data[last_mora] / 10000).toFixed(1) + ' w' } - if (ledgerInfo.day_data.current_primogems > 10000) { - ledgerInfo.day_data.current_primogems = (ledgerInfo.day_data.current_primogems / 10000).toFixed(1) + ' w' + if (ledgerInfo.day_data[gacha] > 10000) { + ledgerInfo.day_data[gacha] = (ledgerInfo.day_data[gacha] / 10000).toFixed(1) + ' w' } - if (ledgerInfo.day_data.current_mora > 10000) { - ledgerInfo.day_data.current_mora = (ledgerInfo.day_data.current_mora / 10000).toFixed(1) + ' w' + if (ledgerInfo.day_data[mora] > 10000) { + ledgerInfo.day_data[mora] = (ledgerInfo.day_data[mora] / 10000).toFixed(1) + ' w' } - let color = ['#73a9c6', '#d56565', '#70b2b4', '#bd9a5a', '#739970', '#7a6da7', '#597ea0'] - for (let i in ledgerInfo.month_data.group_by) { - ledgerInfo.month_data.group_by[i].color = color[ledgerInfo.month_data.group_by[i].action_id] - } ledgerInfo.color = [] ledgerInfo.month_data.group_by.forEach((item) => { - ledgerInfo.color.push(['#73a9c6', '#d56565', '#70b2b4', '#bd9a5a', '#739970', '#7a6da7', '#597ea0'][item.action_id]) + if (this.e.isSr){ + item.color = this.color[this.action[item.action]] + item.action_name = item.action_name.slice(0, 4) + } else { + item.color = this.color[item.action_id] + } + ledgerInfo.color.push(item.color) }) + ledgerInfo.group_by = JSON.stringify(ledgerInfo.month_data.group_by) ledgerInfo.color = JSON.stringify(ledgerInfo.color) + let files = fs.readdirSync('./plugins/genshin/resources/StarRail/img/role').filter(file => file.endsWith('.webp')) + let icon = lodash.sample(files) + + let week = [ + '星期日', + '星期一', + '星期二', + '星期三', + '星期四', + '星期五', + '星期六' + ] + let srday = `${week[moment().day()]}` + return { saveId: this.e.uid, uid: this.e.uid, - day, + day, icon, srday, + nowDay: moment(new Date()).format('YYYY年MM月DD日'), ...ledgerInfo, ...this.screenData } } // 保存上两个原石数据 - async saveLedger (uid, ck = '') { + async saveLedger(uid, ck = '', isTask = false) { if (ck) { uid = ck.uid } else { /** 获取个人ck */ - ck = await MysInfo.checkUidBing(uid) + ck = await MysInfo.checkUidBing(uid, this.e.isSr ? 'sr' : 'gs') } if (!ck || lodash.isEmpty(ck)) { return false } - let dataPath = `./data/NoteData/${uid}.json` + let dataPath = `./data/${this.e?.isSr ? 'SR_NoteData' : 'NoteData'}/${uid}.json` let NoteData = {} if (fs.existsSync(dataPath)) { NoteData = JSON.parse(fs.readFileSync(dataPath, 'utf8')) @@ -153,7 +196,10 @@ export default class Ledger extends base { if (NowMonth == month && this.e.nowData && this.e.nowData?.data?.data_month == NowMonth) { ledgerInfo = this.e.nowData } else { - ledgerInfo = await this.ysLedger(ck, month) + let months = month + if (this.e.isSr) months = String(year) + (month < 10 ? '0' : '') + String(month) + + ledgerInfo = await this.ysLedger(ck, months, isTask) if (!ledgerInfo) continue } @@ -166,47 +212,52 @@ export default class Ledger extends base { common.sleep(100) } - logger.mark(`[札记查询][自动保存] uid:${uid} 原石数据已保存`) + logger.mark(`[札记查询][自动保存] uid:${uid} 数据已保存`) fs.writeFileSync(dataPath, JSON.stringify(NoteData, '', '\t')) return NoteData } - async ysLedger (ck, month) { - let mysApi = new MysApi(ck.uid, ck.ck, { log: false }) - - let ledgerInfo = await mysApi.getData('ys_ledger', { month }) + async ysLedger(ck, month, isTask) { + let ledgerInfo = {} + if (isTask) { + let mysApi = new MysApi(ck.uid, ck.ck, { log: false }, this.e?.isSr) + ledgerInfo = await mysApi.getData('ys_ledger', { month }) + ledgerInfo = await new MysInfo(this.e).checkCode(ledgerInfo, 'ys_ledger', mysApi, { month }, isTask) + } else { + ledgerInfo = await MysInfo.get(this.e, 'ys_ledger', { month }) + } if (!ledgerInfo || ledgerInfo.retcode != 0) return false return ledgerInfo.data } - async ledgerTask (manual) { - let cks = await MysInfo.getBingCkUid() + async ledgerTask(manual) { + let cks = (await GsCfg.getBingCk(this.e?.isSr ? 'sr' : 'gs')).ck let uids = lodash.map(cks, 'uid') let finishTime = moment().add(uids.length * 0.7, 's').format('MM-DD HH:mm:ss') - logger.mark(`札记ck:${uids.length}个,预计需要${this.countTime(uids.length)} ${finishTime} 完成`) + logger.mark(`${this.e?.isSr ? '开拓月历' : '札记'}ck:${uids.length}个,预计需要${this.countTime(uids.length)} ${finishTime} 完成`) if (manual) { - await this.e.reply('开始任务:保存原石数据,完成前请勿重复执行') - await this.e.reply(`札记ck:${uids.length}个\n预计需要:${this.countTime(uids.length)}\n完成时间:${finishTime}`) + await this.e.reply(`开始任务:保存${this.e?.isSr ? '星琼' : '原石'}数据,完成前请勿重复执行`) + await this.e.reply(`${this.e?.isSr ? '开拓月历' : '札记'}ck:${uids.length}个\n预计需要:${this.countTime(uids.length)}\n完成时间:${finishTime}`) } for (let uid of uids) { let ck = cks[uid] this.e.user_id = ck.qq - await this.saveLedger(uid, ck) + await this.saveLedger(uid, ck, true) await common.sleep(500) } if (manual) { - this.e.reply('原石任务完成') + this.e.reply(`${this.e?.isSr ? '星琼' : '原石'}任务完成`) } } - countTime (num) { + countTime(num) { let time = num * 0.7 let hour = Math.floor((time / 3600) % 24) let min = Math.floor((time / 60) % 60) @@ -218,7 +269,7 @@ export default class Ledger extends base { return msg } - async ledgerCount () { + async ledgerCount() { this.model = 'ledgerCount' let mysInfo = await MysInfo.init(this.e, 'ys_ledger') @@ -231,7 +282,7 @@ export default class Ledger extends base { return this.ledgerCountData(NoteData) } - async ledgerCountHistory () { + async ledgerCountHistory() { let nowYear if (this.e.msg.includes('去年')) { nowYear = moment().year() - 1 @@ -251,19 +302,19 @@ export default class Ledger extends base { let mysInfo = await MysInfo.init(this.e, 'ys_ledger') let uid = mysInfo?.uid if (!uid) return false - let dataPath = `./data/NoteData/${uid}.json` + let dataPath = `./data/${this.e?.isSr ? 'SR_NoteData' : 'NoteData'}/${uid}.json` let NoteData = {} if (fs.existsSync(dataPath)) { NoteData = JSON.parse(fs.readFileSync(dataPath, 'utf8')) } // console.log(NoteData) if (!NoteData || lodash.isEmpty(NoteData)) { - this.e.reply('暂无原石数据,请先发送 #原石', false, { at: true }) + this.e.reply(`${this.e?.isSr ? '暂无星琼数据,请先发送 *星琼' : '暂无原石数据,请先发送 #原石'}`, false, { at: true }) return false } NoteData = NoteData[nowYear] if (!NoteData) { - this.e.reply(`uid:${uid} ${nowYear}年无原石统计数据!`, false, { at: true }) + this.e.reply(`uid:${uid} ${nowYear}年无${this.e?.isSr ? '星琼' : '原石'}统计数据!`, false, { at: true }) return false } lodash.forEach(NoteData, (val) => { @@ -273,7 +324,7 @@ export default class Ledger extends base { return this.ledgerCountData(NoteData, String(nowYear)) } - ledgerCountData (NoteData, nowYear) { + ledgerCountData(NoteData, nowYear) { let hasMore = false let yearText if (!nowYear) { @@ -317,28 +368,38 @@ export default class Ledger extends base { yearText } + let Primogems = this.e.isSr ? 'current_hcoin' : 'current_primogems' + let Mora = this.e.isSr ? 'current_rails_pass' : 'current_mora' lodash.forEach(NoteData, (val) => { - data.allPrimogems += val.month_data.current_primogems - data.allMora += val.month_data.current_mora + data.allPrimogems += val.month_data[Primogems] + data.allMora += val.month_data[Mora] // 柱状图数据 + if (this.e.isSr) + val.data_month = val.data_month.slice(-2, -1) == '0' ? val.data_month.slice(-1) : val.data_month.slice(-2) + data.primogemsMonth.push({ - value: val.month_data.current_primogems, + value: val.month_data[Primogems], month: String(val.data_month), year: String(val.year), - name: '原石' + name: this.e.isSr ? '星琼' : '原石' }) data.moraMonth.push({ - value: (val.month_data.current_mora / 1000).toFixed(0), + value: (val.month_data[Mora] / 1000).toFixed(0), month: String(val.data_month), year: String(val.year), - name: '摩拉' + name: this.e.isSr ? '专&通票' : '摩拉' }) }) // 单位处理 - data.allMora = (data.allMora / 10000).toFixed(0) + 'w' data.allPrimogemsShow = (data.allPrimogems / 10000).toFixed(2) + 'w' data.allGacha = (data.allPrimogems / 160).toFixed(0) + if (this.e.isSr) { + data.allGacha = (data.allPrimogems / 160 + data.allMora).toFixed(0) + data.allMora = data.allMora.toFixed(0) + '张' + } else { + data.allMora = (data.allMora / 10000).toFixed(0) + 'w' + } // 原石最多 data.maxPrimogems = lodash.maxBy(data.primogemsMonth, 'value') @@ -350,6 +411,12 @@ export default class Ledger extends base { let groupBy = lodash(NoteData).map('month_data').map('group_by').flatMap().value() + if (this.e.isSr) + groupBy.forEach((item) => { + item.action_id = this.action[item.action] + item.action = item.action_name.slice(0, 4) + }) + let pieData = {} for (let val of groupBy) { if (!pieData[val.action]) { @@ -370,7 +437,7 @@ export default class Ledger extends base { data.color = [] pieData.forEach((item) => { - data.color.push(['#73a9c6', '#d56565', '#70b2b4', '#bd9a5a', '#739970', '#7a6da7', '#597ea0'][item.action_id]) + data.color.push(this.color[item.action_id]) }) data.group_by = pieData diff --git a/plugins/genshin/model/mys/apiTool.js b/plugins/genshin/model/mys/apiTool.js index 036e770..3df51e3 100644 --- a/plugins/genshin/model/mys/apiTool.js +++ b/plugins/genshin/model/mys/apiTool.js @@ -161,7 +161,7 @@ export default class apiTool { * 开拓阅历接口 */ ys_ledger: { - url: `${host}/event/srledger/month_info`, + url: `${host}event/srledger/month_info`, query: `region=${this.server}&uid=${this.uid}&month=${data.month}` }, /** 角色详情 */ diff --git a/plugins/genshin/model/mys/mysInfo.js b/plugins/genshin/model/mys/mysInfo.js index 31bb030..26aa0af 100644 --- a/plugins/genshin/model/mys/mysInfo.js +++ b/plugins/genshin/model/mys/mysInfo.js @@ -177,7 +177,7 @@ export default class MysInfo { } for (let i in res) { - res[i] = await mysInfo.checkCode(res[i], res[i].api, mysApi) + res[i] = await mysInfo.checkCode(res[i], res[i].api, mysApi, api[res[i].api]) if (res[i]?.retcode === 0) continue @@ -185,7 +185,7 @@ export default class MysInfo { } } else { res = await mysApi.getData(api, data) - res = await mysInfo.checkCode(res, api, mysApi) + res = await mysInfo.checkCode(res, api, mysApi, data) } return res @@ -329,15 +329,15 @@ export default class MysInfo { } else { // 重新分配 await mysUser.disable(game) - return onlySelfCk ? '' : await this.getCookie() + return onlySelfCk ? '' : await this.getCookie(game) } } return this.ckUser?.ck } - async checkCode(res, type, mysApi = {}) { + async checkCode(res, type, mysApi = {}, data = {}, isTask = false) { if (!res) { - this.e.reply('米游社接口请求失败,暂时无法查询') + if (!isTask) this.e.reply('米游社接口请求失败,暂时无法查询') return false } @@ -359,28 +359,30 @@ export default class MysInfo { if (/(登录|login)/i.test(res.message)) { if (this.ckInfo.uid) { logger.mark(`[ck失效][uid:${this.uid}][qq:${this.userId}]`) - this.e.reply(`UID:${this.ckInfo.uid},米游社cookie已失效`) + if (!isTask) this.e.reply(`UID:${this.ckInfo.uid},米游社cookie已失效`) } else { logger.mark(`[公共ck失效][ltuid:${this.ckInfo.ltuid}]`) - this.e.reply('米游社查询失败,请稍后再试') + if (!isTask) this.e.reply('米游社查询失败,请稍后再试') } - await this.delCk() + if (!isTask) await this.delCk() } else { - this.e.reply(`米游社接口报错,暂时无法查询:${res.message}`) + if (!isTask) this.e.reply(`米游社接口报错,暂时无法查询:${res.message}`) } break case 1008: - this.e.reply('\n请先去米游社绑定角色', false, { at: this.userId }) + if (!isTask) this.e.reply('\n请先去米游社绑定角色', false, { at: this.userId }) break case 10101: - await this.disableToday() - this.e.reply('查询已达今日上限') + if (!isTask) { + await this.disableToday() + this.e.reply('查询已达今日上限') + } break case 10102: if (res.message === 'Data is not public for the user') { - this.e.reply(`\nUID:${this.uid},米游社数据未公开`, false, { at: this.userId }) + if (!isTask) this.e.reply(`\nUID:${this.uid},米游社数据未公开`, false, { at: this.userId }) } else { - this.e.reply(`uid:${this.uid},请先去米游社绑定角色`) + if (!isTask) this.e.reply(`uid:${this.uid},请先去米游社绑定角色`) } break // 伙伴不存在~ @@ -389,17 +391,17 @@ export default class MysInfo { break case 1034: logger.mark(`[米游社查询失败][uid:${this.uid}][qq:${this.userId}] 遇到验证码`) - this.e.reply('米游社查询遇到验证码,请稍后再试') + if (!isTask) this.e.reply('米游社查询遇到验证码,请稍后再试') break default: - this.e.reply(`米游社接口报错,暂时无法查询:${res.message || 'error'}`) + if (!isTask) this.e.reply(`米游社接口报错,暂时无法查询:${res.message || 'error'}`) break } if (res.retcode !== 0) { logger.mark(`[mys接口报错]${JSON.stringify(res)},uid:${this.uid}`) } // 添加请求记录 - await this.ckUser.addQueryUid(this.uid) + if (!isTask) await this.ckUser.addQueryUid(this.uid) return res } diff --git a/plugins/genshin/model/note.js b/plugins/genshin/model/note.js index 3664249..3f2caa6 100644 --- a/plugins/genshin/model/note.js +++ b/plugins/genshin/model/note.js @@ -33,7 +33,6 @@ export default class Note extends base { let screenData = this.screenData if (this.e.isSr) { - screenData.tplFile = './plugins/genshin/resources/StarRail/html/dailyNote/dailyNote.html' resUser = await MysInfo.get(this.e, 'UserGame') resUser.data?.list?.forEach(v => this.e.uid.includes(v.game_biz)) if (!resUser || resUser.retcode !== 0) return false diff --git a/plugins/genshin/resources/StarRail/html/dailyNote/dailyNote.html b/plugins/genshin/resources/StarRail/html/dailyNote/dailyNote.html index 20b87b7..319b7b0 100644 --- a/plugins/genshin/resources/StarRail/html/dailyNote/dailyNote.html +++ b/plugins/genshin/resources/StarRail/html/dailyNote/dailyNote.html @@ -4,7 +4,7 @@ - + @@ -18,7 +18,7 @@
- +
{{nowDay}}
@@ -51,7 +51,7 @@
{{each ex.avatars avatars}} {{if avatars=='派遣头像'}} -
+
{{else}}
{{/if}} diff --git a/plugins/genshin/resources/StarRail/html/gachaLog/gachaLog.html b/plugins/genshin/resources/StarRail/html/gachaLog/gachaLog.html index 2b48450..c53c06b 100644 --- a/plugins/genshin/resources/StarRail/html/gachaLog/gachaLog.html +++ b/plugins/genshin/resources/StarRail/html/gachaLog/gachaLog.html @@ -3,9 +3,9 @@ - + - + {{@headStyle}} @@ -20,7 +20,7 @@ {{allNum}}抽 {{typeName}}池 - +
@@ -50,7 +50,7 @@ UP {{/if}}
{{val.num}}
diff --git a/plugins/genshin/resources/StarRail/html/ledger/ledger.css b/plugins/genshin/resources/StarRail/html/ledger/ledger.css new file mode 100644 index 0000000..3c32af0 --- /dev/null +++ b/plugins/genshin/resources/StarRail/html/ledger/ledger.css @@ -0,0 +1,310 @@ +@font-face { + font-family: "HYWenHei-55W"; + src: url("../../../../../../resources/font/HYWenHei-55W.ttf"); + font-weight: normal; + font-style: normal; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + user-select: none; + font-family: HYWenHei-55W; + font-weight: bold; +} + +body { + font-size: 18px; + color: #1e1f20; + font-family: PingFangSC-Medium, PingFang SC, sans-serif; + transform: scale(1.5); + transform-origin: 0 0; + width: 1200px; +} + +.container { + width: 1200px; + height: 1835px; + background-color: #f5f6fb; + background-image: url("../../img/note/bg.png"); +} + +.uid { + border-radius: 0 25px 25px 0px; + display: flex; + width: 670px; + height: 200px; + justify-content: center; + flex-direction: column; + margin-top: 195px; + margin-left: 50px; + background-image: url('../../img/note/uidbg.png'); +} + +.uid_item { + /* background-color: #302b25; */ + color: #fff; + margin-left: 50px; + align-items: center; + justify-content: left; + display: flex; + padding: 8px 10px; + font-size: 45px; + height: 100px; + border-radius: 0 12px 0 0px; + font-family: MiSans-Demibold; +} + +.uid_span { + text-indent: 1em; + font-size: 48px; + display: flex; +} + +.uid_name { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + max-width: 10em; +} + +.day_span { + text-indent: 1em; + font-size: 48px; + display: flex; + margin-left: -30px; +} + +.uid_item:nth-child(2) { + /* background-color: #595045; */ + border-radius: 0 0 12px 0px; + font-size: 40px; + font-family: MiSans-Medium; +} + +.uid_text { + width: 150px; + text-align: right; +} + +.title { + display: flex; + position: relative; +} + +.title_date { + width: 370px; + height: 470px; + position: absolute; + right: 83px; + top: 27px; + padding: 10px; + transform: rotate(4deg); + background-color: #fff; + border-bottom: 10px solid #b47f4c; + box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.2); +} + +.icon { + width: 350px; + height: 350px; +} + +.title_date_text { + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + font-size: 36px; + color: #808080; + height: 100px; +} + +img { + width: 100%; + height: 100%; +} + +.subject { + width: 1000px; + margin: 0 auto; + margin-top: 60px; + height: 400px; + background-color: #e5e5e5; + padding-left: 60px; +} + +.subject_note { + font-size: 24px; + margin-top: 49px; + padding-top: 24px; + color: #000000; +} + +.subject_note span:nth-child(1) { + font-size: 82px; + color: #b47f4c; +} + +.subject_solid { + display: flex; + width: 880px; + border-radius: 10px; + background-color: #a1a1a1; + height: 20px; + margin-top: 44px; + margin-bottom: 20px; +} + +.subject_solid span { + background-color: #b47f4c; + width: 50%; + border-radius: 10px; +} + +.data-box { + display: flex; + margin-bottom: 30px; +} + +.data-box .head { + margin-bottom: 6px; + font-weight: 700; + font-size: 48px; +} + +.month .primogems { + background: url(data:image/png;base64,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) no-repeat; + background-size: auto 100%; + width: 500px; + height: 120px; + line-height: 120px; + display: flex; + align-items: center; + margin-left: -50px; +} + +.primogems .icon-ys { + width: 80px; + height: 80px; + margin-left: 20px; + background: url(https://webstatic.mihoyo.com/upload/event/2023/03/28/77cb5426637574ba524ac458fa963da0_8938800417123864478.png) no-repeat 50% / cover; + ; +} + +.primogems .icon-mola { + width: 80px; + height: 80px; + margin-left: 20px; + background: url(../../img/other/rails_pass.png) no-repeat 50% / cover; +} + +.primogems .text { + margin-left: 35px; + white-space: nowrap; + font-size: 32px; +} + +.day { + margin-left: 10px; +} + +.day .primogems { + background: url(data:image/png;base64,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) no-repeat; + background-size: auto 100%; + width: 500px; + height: 120px; + line-height: 120px; + display: flex; + align-items: center; + margin-left: -15px; +} + +.chart-box .chart-info { + display: flex; +} + +.chart-box .head { + margin-bottom: 30px; + font-weight: 800; + font-size: 48px; + margin-left: 70px; +} + +.title_wt { + margin: 30px 0; + background-color: #b47f4c; + display: flex; + height: 80px; + width: 330px; + margin-left: 100px; + justify-content: center; + align-items: center; +} + +.title_wt div { + font-size: 38px; + color: #fff; + background-color: #302b25; + height: 80px; + display: flex; + margin-left: 30px; + padding-left: 30px; + justify-content: left; + align-items: center; + width: calc(100% - 30px); +} + +#chartContainer { + width: 440px; + height: 440px; + background: url(../../img/other/chart.png) no-repeat 50% / cover; + margin-left: 70px; +} + +.tooltip { + margin-left: 20px; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.tooltip li { + list-style: none; + display: flex; + justify-content: flex-start; + align-items: center; +} + +.tooltip li i { + width: 10px; + height: 10px; + margin-right: 10px; +} + +.tooltip li .action { + width: 250px; +} + +.tooltip li em { + font-size: 40px; + color: #28384d; + font-style: normal; + width: 30px; +} + +.tooltip li .num { + width: 180px; +} + +.tooltip li .percent { + width: 10px; +} + +.logo { + position: absolute; + bottom: 90px; + left: 130px; + color: #fff; +} \ No newline at end of file diff --git a/plugins/genshin/resources/StarRail/html/ledger/ledger.html b/plugins/genshin/resources/StarRail/html/ledger/ledger.html new file mode 100644 index 0000000..0987ec3 --- /dev/null +++ b/plugins/genshin/resources/StarRail/html/ledger/ledger.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + +
+
+
+
UID:{{uid}} +
+
开拓月历·{{day}}
+
+
+
+
+ +
+
+
{{nowDay}}
+
{{srday}}
+
+
+
+
+
+
+
当月获取:
+
+
+
星琼:{{month_data.current_hcoin}} | {{month_data.gacha}} 抽
+
+
+
+
专&通票:{{month_data.current_rails_pass}} 张
+
+
+
+
上月获取:
+
+
+
星琼:{{month_data.last_hcoin}} | {{month_data.last_gacha}} 抽
+
+
+
+
专&通票:{{month_data.last_rails_pass}} 张
+
+
+
+
+
+
+ 星琼收入统计 +
+
+
+
+
+
    + {{each month_data.group_by val}} +
  • + + {{val.action_name}} {{val.num}}{{val.percent}}% +
  • + {{/each}} +
+
+
+ +
+
+
+ + + + + + \ No newline at end of file diff --git a/plugins/genshin/resources/StarRail/html/ledgerCount/ledgerCount.css b/plugins/genshin/resources/StarRail/html/ledgerCount/ledgerCount.css new file mode 100644 index 0000000..e6561e1 --- /dev/null +++ b/plugins/genshin/resources/StarRail/html/ledgerCount/ledgerCount.css @@ -0,0 +1,131 @@ +@font-face { + font-family: "tttgbnumber"; + src: url("../../../../../../resources/font/tttgbnumber.ttf"); + font-weight: normal; + font-style: normal; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + user-select: none; +} + +body { + font-size: 16px; + width: 530px; + color: #1e1f20; + transform: scale(1.3); + transform-origin: 0 0; +} + +.container { + width: 530px; + padding: 20px 15px 10px 15px; + background-color: #f5f6fb; +} + +.head_box { + border-radius: 15px; + font-family: tttgbnumber; + padding: 10px 20px; + position: relative; + box-shadow: 0 5px 10px 0 rgb(0 0 0 / 15%); +} + +.head_box .id_text { + font-size: 24px; + color: #e8ebee; +} + +.head_box .day_text { + font-size: 20px; + color: #f3f6f8; +} + +.head_box .genshin_logo { + position: absolute; + top: -15px; + right: 15px; + width: 150px; +} + +.base_info { + position: relative; + padding-left: 10px; +} + +.uid { + font-family: tttgbnumber; +} + +.data_box { + border-radius: 15px; + margin-top: 20px; + margin-bottom: 20px; + padding: 20px 15px 5px 15px; + background: #fff; + box-shadow: 0 5px 10px 0 rgb(0 0 0 / 15%); + position: relative; +} + +.tab_lable { + position: absolute; + top: -10px; + left: -8px; + background: #d4b98c; + color: #fff; + font-size: 14px; + padding: 3px 10px; + border-radius: 15px 0px 15px 15px; + z-index: 20; +} + +.data_line { + display: flex; + justify-content: space-around; + margin-bottom: 14px; +} + +.data_line_item { + width: 100px; + text-align: center; + /*margin: 0 20px;*/ +} + +.num { + font-family: tttgbnumber; + font-size: 24px; +} + +.data_box .lable { + font-size: 14px; + color: #7f858a; + line-height: 1; + margin-top: 3px; +} + +#chartContainer { + width: 100%; + height: 300px; +} + +#chartContainer2 { + width: 115%; + height: 280px; + margin-left: -60px; +} + +.logo { + font-size: 14px; + font-family: "tttgbnumber"; + text-align: center; + color: #7994a7; +} + +.hasMore { + font-size: 12px; + margin: 6px 0; + color: #7f858a; +} \ No newline at end of file diff --git a/plugins/genshin/resources/StarRail/html/ledgerCount/ledgerCount.html b/plugins/genshin/resources/StarRail/html/ledgerCount/ledgerCount.html new file mode 100644 index 0000000..56252f3 --- /dev/null +++ b/plugins/genshin/resources/StarRail/html/ledgerCount/ledgerCount.html @@ -0,0 +1,188 @@ + + + + + + + + + + + {{@headStyle}} + + + +
+
+
ID: {{uid}}
+

{{yearText}}星琼统计

+ +
+
+
数据总览
+
+
+
{{allPrimogemsShow}}
+
总星琼
+
+
+
{{allGacha}}抽
+
总抽数
+
+
+
{{maxPrimogems.month}}月
+
星琼最多
+
+
+
{{maxPrimogems.value}}
+
{{maxPrimogems.month}}月星琼
+
+
+
+
+
{{allMora}}
+
总专&通票
+
+
+
{{maxMora.month}}月
+
专&通票最多
+
+
+ {{if group_by.length>0 }} +
{{group_by[0].num}}
+
{{group_by[0].action}}
+ {{/if}} +
+
+ {{if group_by.length>0 }} +
{{group_by[1].num}}
+
{{group_by[1].action}}
+ {{/if}} +
+
+
+
+
月份统计
+
+
+
+
详细统计
+
+
+ {{if hasMore }} +
*该数据只显示最近12个月
+ {{/if}} + +
+ + + + + + \ No newline at end of file diff --git a/plugins/genshin/resources/StarRail/html/logCount/logCount.html b/plugins/genshin/resources/StarRail/html/logCount/logCount.html index 89f7e0d..981ce5d 100644 --- a/plugins/genshin/resources/StarRail/html/logCount/logCount.html +++ b/plugins/genshin/resources/StarRail/html/logCount/logCount.html @@ -3,7 +3,7 @@ - + {{@headStyle}} @@ -13,7 +13,7 @@
ID: {{uid}}

抽卡统计-{{typeName}}

- +
{{each pool val}} {{if val.roleNum > 0}} @@ -33,10 +33,10 @@
{{v.count}} {{if v.item_type=='角色'}} - + {{/if}} {{if v.item_type=='光锥'}} - + {{/if}}
{{/each}} diff --git a/plugins/genshin/resources/StarRail/img/other/chart.png b/plugins/genshin/resources/StarRail/img/other/chart.png new file mode 100644 index 0000000..c0eaf85 Binary files /dev/null and b/plugins/genshin/resources/StarRail/img/other/chart.png differ diff --git a/plugins/genshin/resources/StarRail/img/other/rails_pass.png b/plugins/genshin/resources/StarRail/img/other/rails_pass.png new file mode 100644 index 0000000..50ec241 Binary files /dev/null and b/plugins/genshin/resources/StarRail/img/other/rails_pass.png differ