优化绑定uid&抽卡记录增加最欧最非

This commit is contained in:
HanaHimeUnica 2024-03-07 12:56:08 +08:00
parent ca78e42bbe
commit dd4b3523b9
4 changed files with 71 additions and 44 deletions

View File

@ -42,7 +42,7 @@ export class user extends plugin {
fnc: 'delUid'
},
{
reg: '^#(原神|星铁)?绑定(uid|UID)?\\s*([1-9]|18)[0-9]{8}$',
reg: '^#(原神|星铁)?绑定(uid|UID)?(\\s|\\+)*([1-9]|18)[0-9]{8}$',
fnc: 'bingUid'
},
{

View File

@ -4,8 +4,7 @@ import lodash from "lodash"
import fs from "node:fs"
import common from "../../../lib/common/common.js"
import gsCfg from "./gsCfg.js"
import GachaData from "./gachaData.js"
import { Character, Weapon } from "../../miao-plugin/models/index.js"
import { Character, Weapon } from "#miao.models"
export default class GachaLog extends base {
constructor(e) {
@ -45,7 +44,7 @@ export default class GachaLog extends base {
} else if (type === "weapon" || type === "武器" || type === "光锥") {
let weapon = Weapon.get(name, game)
if (!weapon) {
console.log("not-found-weapon",`[${name}]`, game)
console.log("not-found-weapon", `[${name}]`, game)
}
return weapon?.imgs?.icon || ""
}
@ -134,8 +133,7 @@ export default class GachaLog extends base {
let url = txt.match(/auth_appid=webview_gacha(.*)hk4e_cn/)
/** 删除文件 */
fs.unlink(textPath, () => {
})
fs.unlink(textPath, () => { })
if (!url || !url[0]) {
return false
@ -270,7 +268,7 @@ export default class GachaLog extends base {
return false
}
logger.mark(`${this.e.logFnc}[uid:${this.uid}] 开始获取:${this.typeName}记录...`)
logger.mark(`${this.e.logFnc}[UID:${this.uid}] 开始获取:${this.typeName}记录...`)
let all = []
let logJson = this.readJson()
@ -316,14 +314,14 @@ export default class GachaLog extends base {
}
if (!res?.data?.list || res.data.list.length <= 0) {
logger.mark(`${this.e.logFnc}[uid:${this.uid}] 获取${this.typeName}记录完成,共${Number(page) - 1}`)
logger.mark(`${this.e.logFnc}[UID:${this.uid}] 获取${this.typeName}记录完成,共${Number(page) - 1}`)
return { hasErr: false, list: [] }
}
let list = []
for (let val of res.data.list) {
if (ids.get(String(val.id))) {
logger.mark(`${this.e.logFnc}[uid:${this.uid}] 获取${this.typeName}记录完成,暂无新记录`)
logger.mark(`${this.e.logFnc}[UID:${this.uid}] 获取${this.typeName}记录完成,暂无新记录`)
return { hasErr: false, list }
} else {
list.push(val)
@ -634,9 +632,7 @@ export default class GachaLog extends base {
num: fourLog[i]
})
}
four = four.sort((a, b) => {
return b.num - a.num
})
four = four.sort((a, b) => { return b.num - a.num })
if (four.length <= 0) {
four.push({ name: "无", num: 0 })
@ -645,23 +641,23 @@ export default class GachaLog extends base {
let fiveAvg = 0
let fourAvg = 0
if (fiveNum > 0) {
fiveAvg = ((allNum - noFiveNum) / fiveNum).toFixed(2)
fiveAvg = Math.round((allNum - noFiveNum) / fiveNum);
}
if (fourNum > 0) {
fourAvg = ((allNum - noFourNum) / fourNum).toFixed(2)
fourAvg = Math.round((allNum - noFourNum) / fourNum);
}
// 有效抽卡
let isvalidNum = 0
if (fiveNum > 0 && fiveNum > wai) {
if (fiveLog.length > 0 && !fiveLog[0].isUp) {
isvalidNum = (allNum - noFiveNum - fiveLog[0].num) / (fiveNum - wai)
isvalidNum = Math.round((allNum - noFiveNum - fiveLog[0].num) / (fiveNum - wai));
} else {
isvalidNum = (allNum - noFiveNum) / (fiveNum - wai)
isvalidNum = Math.round((allNum - noFiveNum) / (fiveNum - wai));
}
isvalidNum = isvalidNum.toFixed(2)
}
let upYs = isvalidNum * 160
if (upYs >= 10000) {
upYs = (upYs / 10000).toFixed(2) + "w"
@ -738,17 +734,42 @@ export default class GachaLog extends base {
const max = type === 12 || type === 302 ? 80 : 90
let line = []
let weapon = this.e.isSr ? "光锥" : "武器"
//最非,最欧
let maxValue, minValue;
if (data && data.fiveLog) {
const filteredFiveLog = data.fiveLog.filter(item => item.num !== 0);
if (filteredFiveLog.length > 0) {
maxValue = Math.max(...filteredFiveLog.map(item => item.num));
minValue = Math.min(...filteredFiveLog.map(item => item.num));
} else {
if (data.fiveLog[0]) {
maxValue = data.fiveLog[0];
minValue = data.fiveLog[0];
} else {
maxValue = 0;
minValue = 0;
}
}
} else {
maxValue = 0;
minValue = 0;
}
if ([301, 11].includes(type)) {
line = [[
{ lable: "未出五星", num: data.noFiveNum, unit: "抽" },
{ lable: "五星", num: data.fiveNum, unit: "个" },
{ lable: "五星平均", num: data.fiveAvg, unit: "抽", color: data.fiveColor },
{ lable: "小保底不歪", num: data.noWaiRate + "%", unit: "" }
{ lable: "小保底不歪", num: data.noWaiRate + "%", unit: "" },
{ lable: "最非", num: maxValue, unit: "抽" }
], [
{ lable: "未出四星", num: data.noFourNum, unit: "抽" },
{ lable: "五星常驻", num: data.wai, unit: "个" },
{ lable: "UP平均", num: data.isvalidNum, unit: "抽" },
{ lable: `UP花费${this?.e?.isSr ? "星琼" : "原石"}`, num: data.upYs, unit: "" }
{ lable: `UP花费${this?.e?.isSr ? "星琼" : "原石"}`, num: data.upYs, unit: "" },
{ lable: "最欧", num: minValue, unit: "抽" }
]]
}
// 常驻池
@ -757,12 +778,14 @@ export default class GachaLog extends base {
{ lable: "未出五星", num: data.noFiveNum, unit: "抽" },
{ lable: "五星", num: data.fiveNum, unit: "个" },
{ lable: "五星平均", num: data.fiveAvg, unit: "抽", color: data.fiveColor },
{ lable: `五星${weapon}`, num: data.weaponNum, unit: "个" }
{ lable: `五星${weapon}`, num: data.weaponNum, unit: "个" },
{ lable: "最非", num: maxValue, unit: "抽" }
], [
{ lable: "未出四星", num: data.noFourNum, unit: "抽" },
{ lable: "四星", num: data.fourNum, unit: "个" },
{ lable: "四星平均", num: data.fourAvg, unit: "抽" },
{ lable: "四星最多", num: data.maxFour.num, unit: data.maxFour.name }
{ lable: "四星最多", num: data.maxFour.num, unit: data.maxFour.name.slice(0, 4) },
{ lable: "最欧", num: minValue, unit: "抽" }
]]
}
// 武器池
@ -771,12 +794,14 @@ export default class GachaLog extends base {
{ lable: "未出五星", num: data.noFiveNum, unit: "抽" },
{ lable: "五星", num: data.fiveNum, unit: "个" },
{ lable: "五星平均", num: data.fiveAvg, unit: "抽", color: data.fiveColor },
{ lable: `四星${weapon}`, num: data.weaponFourNum, unit: "个" }
{ lable: `四星${weapon}`, num: data.weaponFourNum, unit: "个" },
{ lable: "最非", num: maxValue, unit: "抽" }
], [
{ lable: "未出四星", num: data.noFourNum, unit: "抽" },
{ lable: "四星", num: data.fourNum, unit: "个" },
{ lable: "四星平均", num: data.fourAvg, unit: "抽" },
{ lable: "四星最多", num: data.maxFour.num, unit: data.maxFour.name }
{ lable: "四星最多", num: data.maxFour.num, unit: data.maxFour.name.slice(0, 4) },
{ lable: "最欧", num: minValue, unit: "抽" }
]]
}
// 新手池
@ -785,12 +810,14 @@ export default class GachaLog extends base {
{ lable: "未出五星", num: data.noFiveNum, unit: "抽" },
{ lable: "五星", num: data.fiveNum, unit: "个" },
{ lable: "五星平均", num: data.fiveAvg, unit: "抽", color: data.fiveColor },
{ lable: `五星${weapon}`, num: data.weaponNum, unit: "个" }
{ lable: `五星${weapon}`, num: data.weaponNum, unit: "个" },
{ lable: "最非", num: maxValue, unit: "抽" }
], [
{ lable: "未出四星", num: data.noFourNum, unit: "抽" },
{ lable: "四星", num: data.fourNum, unit: "个" },
{ lable: "四星平均", num: data.fourAvg, unit: "抽" },
{ lable: "四星最多", num: data.maxFour.num, unit: data.maxFour.name }
{ lable: "四星最多", num: data.maxFour.num, unit: data.maxFour.name.slice(0, 4) },
{ lable: "最欧", num: minValue, unit: "抽" }
]]
}
let hasMore = false

View File

@ -355,7 +355,7 @@ export default class MysInfo {
async checkCode(res, type, mysApi = {}, data = {}, isTask = false) {
if (!res) {
if (!isTask) this.e.reply(['米游社接口请求失败,暂时无法查询', this.mysButton])
if (!isTask) this.e.reply([`UID:${this.uid},米游社接口请求失败,暂时无法查询`, this.mysButton])
return false
}
@ -380,27 +380,27 @@ export default class MysInfo {
if (!isTask) this.e.reply([`UID:${this.ckInfo.uid}米游社Cookie已失效`, this.mysButton])
} else {
logger.mark(`[公共ck失效][ltuid:${this.ckInfo.ltuid}]`)
if (!isTask) this.e.reply(['米游社查询失败,请稍后再试', this.mysButton])
if (!isTask) this.e.reply([`UID:${this.uid},米游社查询失败,请稍后再试`, this.mysButton])
}
if (!isTask) await this.delCk()
} else {
if (!isTask) this.e.reply([`米游社接口报错,暂时无法查询:${res.message}`, this.mysButton])
if (!isTask) this.e.reply([`UID:${this.uid}米游社接口报错,暂时无法查询:${res.message}`, this.mysButton])
}
break
case 1008:
if (!isTask) this.e.reply(['请先去米游社绑定角色', this.mysButton], false, { at: this.userId })
if (!isTask) this.e.reply([`UID:${this.uid},请先去米游社绑定角色`, this.mysButton], false, { at: this.userId })
break
case 10101:
if (!isTask) {
await this.disableToday()
this.e.reply(['查询已达今日上限', this.mysButton])
this.e.reply([`UID:${this.uid},查询已达今日上限`, this.mysButton])
}
break
case 10102:
if (res.message === 'Data is not public for the user') {
if (!isTask) this.e.reply([`\nUID:${this.uid},米游社数据未公开`, this.mysButton], false, { at: this.userId })
} else {
if (!isTask) this.e.reply([`uid:${this.uid},请先去米游社绑定角色`, this.mysButton])
if (!isTask) this.e.reply([`UID:${this.uid},请先去米游社绑定角色`, this.mysButton])
}
break
// 伙伴不存在~
@ -408,7 +408,7 @@ export default class MysInfo {
if (res.api === 'detail') res.retcode = 0
break
case 5003:
if (!isTask) this.e.reply(['米游社账号异常,暂时无法查询', this.mysButton])
if (!isTask) this.e.reply([`UID:${this.uid},米游社账号异常,暂时无法查询`, this.mysButton])
break
case 1034:
let handler = this.e.runtime?.handler || {}
@ -421,14 +421,14 @@ export default class MysInfo {
if (!res || res?.retcode == 1034) {
logger.mark(`[米游社查询失败][uid:${this.uid}][qq:${this.userId}] 遇到验证码`)
if (!isTask) this.e.reply(['米游社查询遇到验证码,请稍后再试', this.mysButton])
if (!isTask) this.e.reply([`UID:${this.uid},米游社查询遇到验证码,请稍后再试`, this.mysButton])
}
break
case 10307:
if (!isTask) this.e.reply(['版本更新期间,数据维护中', this.mysButton])
if (!isTask) this.e.reply([`UID:${this.uid},版本更新期间,数据维护中`, this.mysButton])
break
default:
if (!isTask) this.e.reply([`米游社接口报错,暂时无法查询:${res.message || 'error'}`, this.mysButton])
if (!isTask) this.e.reply([`UID:${this.uid}米游社接口报错,暂时无法查询:${res.message || 'error'}`, this.mysButton])
break
}
if (res.retcode !== 0) {

View File

@ -76,7 +76,7 @@ body {
border-radius: 15px;
margin-top: 20px;
margin-bottom: 20px;
padding: 20px 0px 5px 5px;
padding: 20px 0px 5px 10px;
background: #fff;
box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.15);
position: relative;
@ -88,6 +88,7 @@ body {
background: #d4b98c;
color: #fff;
font-size: 14px;
font-family: "HYWenHei-55W";
padding: 3px 10px;
border-radius: 15px 0px 15px 15px;
z-index: 20;
@ -130,7 +131,7 @@ body {
/* margin-top: 20px; */
margin-bottom: 20px;
padding: 6px 0px 5px 10px;
background: #fff;
/* background: #fff; */
box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.15);
position: relative;
}
@ -146,12 +147,11 @@ body {
height: 90px;
position: relative;
overflow: hidden;
background: #e7e5d9;
/* background: #e7e5d9; */
}
.item .role_img {
width: 70px;
height: 70px;
border-radius: 7px 7px 20px 0;
display: inline-block;
background-size: auto 100%;
background-repeat: no-repeat;
@ -159,7 +159,6 @@ body {
}
.card_list .item.star5 {
background-image: url(../../img/other/bg5.png);
/*filter: brightness(1.1);*/
background-size: 100%;
background-repeat: no-repeat;
}
@ -184,13 +183,13 @@ body {
.card_list .item .name,
.card_list .item .num_name {
position: absolute;
top: 71px;
top: 70.4px;
left: 0px;
z-index: 9;
font-size: 12px;
text-align: center;
width: 100%;
height: 18px;
height: 30px;
line-height: 18px;
}
.card_list .item .num_name {
@ -210,7 +209,7 @@ body {
border-radius: 1px;
left: 0;
top: 0;
background: #d3bc8d;
background: #bca87e;
}
.label_301 {
background-color: #eb6a4b;
@ -277,7 +276,8 @@ body {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 12px;
font-size: 15px;
font-family: "HYWenHei-55W";
color: #7d7d7d;
padding-bottom: 5px;
}