miao-plugin/models/MysApi.js

127 lines
2.7 KiB
JavaScript
Raw Normal View History

import { User } from './index.js'
import MysInfo from './mys-lib/MysInfo.js'
export default class MysApi {
constructor (e, uid, MysApi) {
this.e = e
this.MysApi = MysApi
this.ckInfo = MysApi.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 = await MysInfo.init(e, 'roleIndex')
if (!mys) {
return false
}
let uid = mys.uid
/* 检查user ck */
if (auth === 'cookie') {
if (mys?.ckInfo?.uid * 1 !== uid * 1) {
e.reply('请绑定CK以使用此功能...')
2022-10-02 13:08:41 +00:00
return false
}
}
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 MysInfo.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?.MysApi?.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 })
}
async getData (api, data) {
if (!this.MysApi) {
return false
}
let e = this.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 MysInfo.get(this.e, 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 })
}
2022-09-20 12:16:19 +00:00
}