miao-plugin/apps/character/profile-stat.js

72 lines
1.9 KiB
JavaScript
Raw Normal View History

2022-08-06 22:36:05 +00:00
import lodash from 'lodash'
import { Common, Profile } from '../../components/index.js'
import { Artifact, Avatars } from '../../components/models.js'
2022-08-06 22:36:05 +00:00
export async function profileStat (e, { render }) {
// 缓存时间,单位小时
let msg = e.msg.replace('#', '').trim()
if (msg === '角色统计' || msg === '武器统计') {
// 暂时避让一下抽卡分析的关键词
return false
}
let MysApi = await e.getMysApi({
auth: 'all',
targetType: 'all',
cookieType: 'all'
})
if (!MysApi || !MysApi?.targetUser?.uid) return true
let uid = MysApi?.targetUser?.uid
2022-08-06 22:36:05 +00:00
let resIndex = await MysApi.getCharacter()
if (!resIndex) {
return true
}
if (!await Avatars.hasTalentCache(uid)) {
e.reply('正在获取角色信息,请稍候...')
}
2022-08-06 22:36:05 +00:00
let avatars = new Avatars(uid, resIndex.avatars)
let ids = avatars.getIds()
let talentData = await avatars.getTalentData(ids, MysApi)
// 天赋等级背景
const talentLvMap = '0,1,1,1,2,2,3,3,3,4,5'.split(',')
let profiles = Profile.getAll(uid)
2022-08-06 22:36:05 +00:00
let avatarRet = []
lodash.forEach(talentData, (avatar) => {
let { talent, id, name } = avatar
2022-08-06 22:36:05 +00:00
avatar.aeq = talent?.a?.original + talent?.e?.original + talent?.q?.original || 3
avatarRet.push(avatar)
if (profiles[id]?.artis) {
avatar.artisMark = Artifact.getTotalMark(name, profiles[id].artis)
}
2022-08-06 22:36:05 +00:00
})
let sortKey = 'level,star,aeq,cons,weapon.level,weapon.star,weapon.affix,fetter'.split(',')
avatarRet = lodash.orderBy(avatarRet, sortKey)
avatarRet = avatarRet.reverse()
let talentNotice = ''
2022-08-06 22:36:05 +00:00
if (!MysApi.isSelfCookie) {
talentNotice = '未绑定Cookie无法获取天赋列表。请回复 #体力帮助 获取配置教程'
2022-08-06 22:36:05 +00:00
}
return await Common.render('character/profile-stat', {
save_id: uid,
uid,
talentLvMap,
avatars: avatarRet,
isSelf: e.isSelf,
talentNotice,
elem: 'hydro'
2022-08-06 22:36:05 +00:00
}, { e, render, scale: 1.8 })
}