优化Mys天赋请求策略,金卡数屏蔽旅行者,对鲸泽佬的极限角色文件增加支持并屏蔽排名

This commit is contained in:
Kokomi 2023-02-19 12:05:42 +08:00
parent ce47f9d8e7
commit c10fe06fea
7 changed files with 42 additions and 14 deletions

View File

@ -25,8 +25,8 @@ let Avatar = {
avatar = { id: char.id, name: char.name, detail: false }
} else {
let player = Player.create(e)
await player.refreshMysDetail()
await player.refreshTalent(char.id)
await player.refreshMysDetail(1)
await player.refreshTalent(char.id, 1)
avatar = player.getAvatar(char.id)
if (!avatar) {
avatar = { id: char.id, name: char.name, detail: false }

View File

@ -29,7 +29,7 @@ app.reg({
groupProfile: {
name: '群内最强',
fn: groupRank,
rule: /^#(群|群内)?(排名|排行)?(最强|最高|最高分|最牛|第一)+.+/
rule: /^#(群|群内)?(排名|排行)?(最强|最高|最高分|最牛|第一|极限)+.+/
},
resetRank: {

View File

@ -4,10 +4,6 @@ import { Data, Common, Format } from '../../components/index.js'
import lodash from 'lodash'
export async function groupRank (e) {
let groupId = e.group_id
if (!groupId) {
return false
}
const groupRank = Common.cfg('groupRank')
let msg = e.original_msg || e.msg
let type = ''
@ -15,12 +11,15 @@ export async function groupRank (e) {
type = 'list'
} else if (/(最强|最高|最高分|最牛|第一)/.test(msg)) {
type = 'detail'
} else if (/极限/.test(msg)) {
type = 'super'
}
if (!type) {
let groupId = e.group_id
if (!type || (!groupId && type !== 'super')) {
return false
}
let mode = /(分|圣遗物|评分|ACE)/.test(msg) ? 'mark' : 'dmg'
let name = msg.replace(/(#|最强|最高分|第一|最高|最牛|圣遗物|评分|群内|群|排名|排行|面板|面版|详情|榜)/g, '')
let name = msg.replace(/(#|最强|最高分|第一|极限|最高|最牛|圣遗物|评分|群内|群|排名|排行|面板|面版|详情|榜)/g, '')
let char = Character.get(name)
if (!char) {
// 名字不存在或不为列表模式则返回false
@ -28,6 +27,17 @@ export async function groupRank (e) {
return false
}
}
// 对鲸泽佬的极限角色文件增加支持
if (type === 'super') {
let player = Player.create(100000000)
if (player.getProfile(char.id)) {
e.uid = 100000000
return await renderProfile(e, char)
} else {
return true
}
}
// 正常群排名
let groupCfg = await ProfileRank.getGroupCfg(groupId)
if (!groupRank) {
e.reply('群面板排名功能已禁用Bot主人可通过【#喵喵设置】启用...')

View File

@ -196,7 +196,11 @@ export default class AvatarData extends Base {
}
getDetail (keys = '') {
return this.getData(keys || 'id,name,level,star,cons,fetter,elem,face,side,gacha,abbr,weapon,talent,artisSet') || {}
let imgs = this.char.getImgs(this.costume)
return {
...(this.getData(keys || 'id,name,level,star,cons,fetter,elem,abbr,weapon,talent,artisSet') || {}),
...Data.getData(imgs, 'face,qFace,side,gacha')
}
}
getArtisDetail () {

View File

@ -78,6 +78,9 @@ export default class Player extends Base {
this._chars = data.chars
}
this.setAvatars(data.avatars || [])
if (!data.avatars) {
this.save()
}
}
/**

View File

@ -201,6 +201,9 @@ export default class ProfileRank {
if (!uid) {
return false
}
if (uid * 1 < 100000005) {
return false
}
try {
let rankLimit = Common.cfg('groupRankLimit') * 1 || 1
if (rankLimit === 1) {

View File

@ -1,5 +1,5 @@
import lodash from 'lodash'
import { Common, Data } from '../../components/index.js'
import { Data } from '../../components/index.js'
import { chestInfo } from '../../resources/meta/info/index.js'
import moment from 'moment'
@ -170,7 +170,8 @@ const MysAvatar = {
if (!avatar) {
return true
}
if (!avatar.hasTalent || MysAvatar.needRefresh(avatar._talent, force, { 0: 60 * 24, 1: 60, 2: 0 })) {
let needMap = { 0: avatar.hasTalent ? 60 * 48 : 60 * 3, 1: 60, 2: 0 }
if (MysAvatar.needRefresh(avatar._talent, force, needMap)) {
ret.push(avatar.id)
}
})
@ -199,7 +200,11 @@ const MysAvatar = {
// 并发5请求天赋数据
await Data.asyncPool(5, needReqIds, async (id) => {
let avatar = player.getAvatar(id)
if (!avatar || failCount > 5) {
if (!avatar) {
return false
}
if (failCount > 5) {
avatar.setTalent(false, 'original', true)
return false
}
let ret = await MysAvatar.refreshAvatarTalent(avatar, mys)
@ -209,6 +214,7 @@ const MysAvatar = {
})
}
player.save()
return true
},
async refreshAvatarTalent (avatar, mys) {
@ -286,7 +292,9 @@ const MysAvatar = {
avatarCount++
if (avatar.star === 5) {
avatar5Count++
goldCount += (avatar.cons || 0) + 1
if (!avatar.char?.isTraveler) {
goldCount += (avatar.cons || 0) + 1
}
}
let w = avatar.weapon
if (w && w.star === 5) {