miao-plugin/apps/character/profile-stat.js
2022-09-19 04:54:01 +08:00

76 lines
2.0 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 lodash from 'lodash'
import { Common, Profile, Data } from '../../components/index.js'
import { AvatarList } from '../../models/index.js'
export async function profileStat (e) {
// 缓存时间,单位小时
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
let resIndex = await MysApi.getCharacter()
if (!resIndex) {
return true
}
if (!await AvatarList.hasTalentCache(uid)) {
e.reply('正在获取角色信息,请稍候...')
}
let avatars = new AvatarList(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)
let avatarRet = []
lodash.forEach(talentData, (avatar) => {
let { talent, id } = avatar
avatar.aeq = talent?.a?.original + talent?.e?.original + talent?.q?.original || 3
avatarRet.push(avatar)
if (profiles[id]) {
let profile = profiles[id]
if(profile.hasData) {
let mark = profiles[id].getArtisMark(false)
avatar.artisMark = Data.getData(mark, 'mark,markClass,names')
}
}
})
let sortKey = 'level,star,aeq,cons,weapon.level,weapon.star,weapon.affix,fetter'.split(',')
avatarRet = lodash.orderBy(avatarRet, sortKey)
avatarRet = avatarRet.reverse()
let talentNotice = ''
if (!MysApi.isSelfCookie) {
talentNotice = '未绑定Cookie无法获取天赋列表。请回复 #体力帮助 获取配置教程'
}
return await Common.render('character/profile-stat', {
save_id: uid,
uid,
talentLvMap,
avatars: avatarRet,
isSelf: e.isSelf,
talentNotice,
elem: 'hydro'
}, { e, scale: 1.8 })
}