miao-plugin/models/MysApi.js
yoimiya-kokomi ed21546e82 一些查询逻辑优化及bug修复
微调部分角色圣遗物评分权重
2022-10-27 04:28:44 +08:00

135 lines
2.9 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 { User } from './index.js'
import YzMysInfo from './mys-lib/YzMysInfo.js'
import YzMysApi from './mys-lib/YzMysApi.js'
export default class MysApi {
constructor (e, uid, mysInfo) {
this.e = e
this.mysInfo = mysInfo
this.ckInfo = mysInfo.ckInfo
this.uid = uid
e.targetUser = this.targetUser
e.selfUser = this.selfUser
e.isSelfCookie = this.isSelfCookie
}
static async init (e, cfg = 'all') {
if (typeof (cfg) === 'string') {
cfg = { auth: cfg }
}
let { auth = 'all' } = cfg
let mys = false
if (e.runtime) {
mys = await e.runtime.getMysInfo(auth)
} else {
mys = await YzMysInfo.init(e, auth === 'cookie' ? 'detail' : 'roleIndex')
}
if (!mys) {
return false
}
let uid = mys.uid
e._mys = new MysApi(e, uid, mys)
return e._mys
}
static async initUser (e, cfg = 'all') {
if (typeof (cfg) === 'string') {
cfg = { auth: cfg }
}
let uid = await YzMysInfo.getUid(e)
if (uid) {
return new User({ id: e.user_id, uid: uid })
}
return false
}
get isSelfCookie () {
return this.uid * 1 === this.ckUid * 1 || this?.mysInfo?.isSelf
}
get ckUid () {
return this.ckInfo.uid
}
get ck () {
return this.ckInfo.ck
}
get selfUser () {
return new User({ id: this.e.user_id, uid: this.uid })
}
get targetUser () {
return new User({ id: this.e.user_id, uid: this.uid })
}
getMysApi (e) {
if (this.mys) {
return this.mys
}
this.mys = new YzMysApi(this.uid, this.ck, { log: false, e })
return this.mys
}
async getData (api, data) {
if (!this.mysInfo) {
return false
}
let e = this.e
let mys = this.getMysApi(e)
// 暂时先在plugin侧阻止错误防止刷屏
e._original_reply = e._original_reply || e.reply
e._reqCount = e._reqCount || 0
e.reply = function (msg) {
if (!e._isReplyed) {
e._isReplyed = true
return e._original_reply(msg)
} else {
// console.log('请求错误')
}
}
e._reqCount++
let ret = await mys.getData(api, data)
e._reqCount--
if (e._reqCount === 0) {
e.reply = e._original_reply
}
if (!ret) {
return false
}
return ret.data || ret
}
// 获取角色信息
async getCharacter () {
return await this.getData('character')
}
// 获取角色详情
async getAvatar (id) {
return await this.getData('detail', { avatar_id: id })
}
// 首页宝箱信息
async getIndex () {
return await this.getData('index')
}
// 获取深渊信息
async getSpiralAbyss (type = 1) {
return await this.getData('spiralAbyss', { schedule_type: type })
}
async getDetail (id) {
return await this.getData('detail', { avatar_id: id })
}
async getCompute (data) {
return await this.getData('compute', data)
}
async getAvatarSkill (id) {
return await this.getData('avatarSkill', { avatar_id: id })
}
}