fix: 完成ts化
This commit is contained in:
parent
a79e7c16bc
commit
52d8992562
|
@ -11,7 +11,7 @@ import cfg from './config/config.js'
|
|||
/**
|
||||
* 监听
|
||||
*/
|
||||
import ListenerLoader from './lib/listener/loader.js'
|
||||
import ListenerLoader from './core/loader.js'
|
||||
/**
|
||||
* 扩展
|
||||
*/
|
||||
|
@ -64,6 +64,6 @@ export class Yunzai extends Client {
|
|||
/** 全局变量 bot */
|
||||
global.Bot = bot
|
||||
/** 加载插件 */
|
||||
return await (await import('./lib/plugins/loader.js')).default.load()
|
||||
return await (await import('./core/plugins/loader.js')).default.load()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -99,11 +99,11 @@ class Cfg {
|
|||
* 主人qq
|
||||
*/
|
||||
get masterQQ() {
|
||||
const masterQQ = this.getConfig('other')?.masterQQ || []
|
||||
if (Array.isArray(masterQQ)) {
|
||||
return masterQQ.forEach(qq => { qq = String(qq) })
|
||||
const qqs = this.getConfig('other')?.masterQQ || []
|
||||
if (Array.isArray(qqs)) {
|
||||
return qqs.map(qq => String(qq))
|
||||
} else {
|
||||
return [String(masterQQ)]
|
||||
return [String(qqs)]
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -99,7 +99,7 @@ export async function makeForwardMsg(
|
|||
/**
|
||||
*
|
||||
*/
|
||||
if (dec) {
|
||||
if (dec && !Array.isArray(forwardMsg)) {
|
||||
/**
|
||||
* 处理描述
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import PluginsLoader from '../plugins/loader.js'
|
||||
import PluginsLoader from './plugins/loader.js'
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
export default class EventListener {
|
||||
prefix = ''
|
|
@ -5,14 +5,18 @@ import lodash from 'lodash'
|
|||
* 加载监听事件
|
||||
*/
|
||||
class ListenerLoader {
|
||||
client = null
|
||||
|
||||
/**
|
||||
* 监听事件加载
|
||||
* @param client Bot示例
|
||||
*/
|
||||
async load (client) {
|
||||
async load(client) {
|
||||
this.client = client
|
||||
|
||||
const files = fs.readdirSync('./lib/events').filter(file => file.endsWith('.js'))
|
||||
const files = fs
|
||||
.readdirSync('./lib/events')
|
||||
.filter(file => file.endsWith('.js'))
|
||||
|
||||
for (let File of files) {
|
||||
try {
|
||||
|
@ -25,13 +29,15 @@ class ListenerLoader {
|
|||
const on = listener.once ? 'once' : 'on'
|
||||
|
||||
if (lodash.isArray(listener.event)) {
|
||||
listener.event.forEach((type) => {
|
||||
listener.event.forEach(type => {
|
||||
const e = listener[type] ? type : 'execute'
|
||||
this.client[on](listener.prefix + type, event => listener[e](event))
|
||||
})
|
||||
} else {
|
||||
const e = listener[listener.event] ? listener.event : 'execute'
|
||||
this.client[on](listener.prefix + listener.event, event => listener[e](event))
|
||||
this.client[on](listener.prefix + listener.event, event =>
|
||||
listener[e](event)
|
||||
)
|
||||
}
|
||||
} catch (e) {
|
||||
logger.mark(`监听事件错误:${File}`)
|
||||
|
@ -42,6 +48,6 @@ class ListenerLoader {
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
export default new ListenerLoader()
|
|
@ -1,5 +1,5 @@
|
|||
import EventListener from '../listener/listener.js'
|
||||
import { sleep } from '../../utils/common.js'
|
||||
import EventListener from './listener.js'
|
||||
import { sleep } from '../utils/common.js'
|
||||
import inquirer from 'inquirer'
|
||||
import lodash from 'lodash'
|
||||
import fetch from 'node-fetch'
|
||||
|
@ -10,20 +10,17 @@ import fetch from 'node-fetch'
|
|||
let inSlider = false
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
export default class loginEvent extends EventListener {
|
||||
|
||||
|
||||
client = null
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
constructor() {
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
super({
|
||||
prefix: 'system.login.',
|
||||
|
@ -33,17 +30,19 @@ export default class loginEvent extends EventListener {
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param event
|
||||
*
|
||||
* @param event
|
||||
*/
|
||||
async execute(event) { }
|
||||
async execute(event) {}
|
||||
|
||||
/**
|
||||
* 扫码登录现在仅能在同一ip下进行
|
||||
* @param event
|
||||
* @param event
|
||||
*/
|
||||
async qrcode(event) {
|
||||
logger.mark(`请使用登录当前QQ的手机${logger.green('扫码')}完成登录,如果显示二维码过期,可以按${logger.green('回车键(Enter)')}刷新,重新输入密码请执行命令:${logger.green('node app login')}`)
|
||||
logger.mark(
|
||||
`请使用登录当前QQ的手机${logger.green('扫码')}完成登录,如果显示二维码过期,可以按${logger.green('回车键(Enter)')}刷新,重新输入密码请执行命令:${logger.green('node app login')}`
|
||||
)
|
||||
// logger.info('等待扫码中...')
|
||||
|
||||
/** 获取扫码结果 */
|
||||
|
@ -70,36 +69,53 @@ export default class loginEvent extends EventListener {
|
|||
/**
|
||||
* 刷新二维码
|
||||
*/
|
||||
inquirer.prompt({ type: 'input', message: '回车刷新二维码,等待扫码中...\n', name: 'enter' }).then(async () => {
|
||||
if (!inSlider) {
|
||||
clearInterval(interval)
|
||||
console.log(' 重新刷新二维码...\n\n')
|
||||
await sleep(1000)
|
||||
this.client.fetchQrcode()
|
||||
}
|
||||
})
|
||||
inquirer
|
||||
.prompt({
|
||||
type: 'input',
|
||||
message: '回车刷新二维码,等待扫码中...\n',
|
||||
name: 'enter'
|
||||
})
|
||||
.then(async () => {
|
||||
if (!inSlider) {
|
||||
clearInterval(interval)
|
||||
console.log(' 重新刷新二维码...\n\n')
|
||||
await sleep(1000)
|
||||
this.client.fetchQrcode()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 收到滑动验证码提示后,必须使用手机拉动,PC浏览器已经无效
|
||||
* @param event
|
||||
* @param event
|
||||
*/
|
||||
async slider(event) {
|
||||
inSlider = true
|
||||
console.log(`\n\n------------------${logger.green('↓↓滑动验证链接↓↓')}----------------------\n`)
|
||||
console.log(
|
||||
`\n\n------------------${logger.green('↓↓滑动验证链接↓↓')}----------------------\n`
|
||||
)
|
||||
console.log(logger.green(event.url))
|
||||
console.log('\n--------------------------------------------------------')
|
||||
console.log(`提示:打开上面链接获取ticket,可使用${logger.green('【滑动验证app】')}获取`)
|
||||
console.log(`链接存在${logger.green('有效期')},请尽快操作,多次操作失败可能会被冻结`)
|
||||
console.log('滑动验证app下载地址:https://wwp.lanzouy.com/i6w3J08um92h 密码:3kuu\n')
|
||||
console.log(
|
||||
`提示:打开上面链接获取ticket,可使用${logger.green('【滑动验证app】')}获取`
|
||||
)
|
||||
console.log(
|
||||
`链接存在${logger.green('有效期')},请尽快操作,多次操作失败可能会被冻结`
|
||||
)
|
||||
console.log(
|
||||
'滑动验证app下载地址:https://wwp.lanzouy.com/i6w3J08um92h 密码:3kuu\n'
|
||||
)
|
||||
|
||||
const ret = await inquirer.prompt([
|
||||
{
|
||||
type: 'list',
|
||||
name: 'type',
|
||||
message: '触发滑动验证,需要获取ticket通过验证,请选择获取方式:',
|
||||
choices: ['0.自动获取ticket', '1.手动获取ticket', '2.滑动验证app请求码获取']
|
||||
choices: [
|
||||
'0.自动获取ticket',
|
||||
'1.手动获取ticket',
|
||||
'2.滑动验证app请求码获取'
|
||||
]
|
||||
}
|
||||
])
|
||||
|
||||
|
@ -135,9 +151,9 @@ export default class loginEvent extends EventListener {
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param url
|
||||
* @returns
|
||||
*
|
||||
* @param url
|
||||
* @returns
|
||||
*/
|
||||
async getTicket(url) {
|
||||
let req = `https://hlhs-nb.cn/captcha/slider?key=${Bot.uin}`
|
||||
|
@ -150,7 +166,11 @@ export default class loginEvent extends EventListener {
|
|||
console.log(`${logger.green(req)}\n----完成后将自动进行登录----`)
|
||||
|
||||
for (let i = 0; i < 40; i++) {
|
||||
const res = await fetch(req, {
|
||||
const res: {
|
||||
data?: {
|
||||
ticket: null
|
||||
}
|
||||
} = await fetch(req, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({ submit: Bot.uin })
|
||||
}).then(res => res.json())
|
||||
|
@ -160,9 +180,9 @@ export default class loginEvent extends EventListener {
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param url
|
||||
* @returns
|
||||
*
|
||||
* @param url
|
||||
* @returns
|
||||
*/
|
||||
async requestCode(url) {
|
||||
let txhelper = {
|
||||
|
@ -171,7 +191,9 @@ export default class loginEvent extends EventListener {
|
|||
code: null,
|
||||
url: url.replace('ssl.captcha.qq.com', 'txhelper.glitch.me')
|
||||
}
|
||||
txhelper.req = await fetch(txhelper.url).catch((err) => console.log(err.toString()))
|
||||
txhelper.req = await fetch(txhelper.url).catch(err =>
|
||||
console.log(err.toString())
|
||||
)
|
||||
|
||||
if (!txhelper.req?.ok) return false
|
||||
|
||||
|
@ -181,7 +203,9 @@ export default class loginEvent extends EventListener {
|
|||
txhelper.code = /\d+/g.exec(txhelper.req)
|
||||
if (!txhelper.code) return false
|
||||
|
||||
console.log(`\n请打开滑动验证app,输入请求码${logger.green('【' + txhelper.code + '】')},然后完成滑动验证\n`)
|
||||
console.log(
|
||||
`\n请打开滑动验证app,输入请求码${logger.green('【' + txhelper.code + '】')},然后完成滑动验证\n`
|
||||
)
|
||||
|
||||
await sleep(200)
|
||||
|
||||
|
@ -193,7 +217,9 @@ export default class loginEvent extends EventListener {
|
|||
})
|
||||
|
||||
//
|
||||
txhelper.res = await fetch(txhelper.url).catch((err) => console.log(err.toString()))
|
||||
txhelper.res = await fetch(txhelper.url).catch(err =>
|
||||
console.log(err.toString())
|
||||
)
|
||||
|
||||
//
|
||||
if (!txhelper.res) return false
|
||||
|
@ -211,14 +237,15 @@ export default class loginEvent extends EventListener {
|
|||
return lodash.trim(txhelper.res)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 设备锁
|
||||
* @param event
|
||||
* @param event
|
||||
*/
|
||||
async device(event) {
|
||||
global.inputTicket = false
|
||||
console.log(`\n\n------------------${logger.green('↓↓设备锁验证↓↓')}----------------------\n`)
|
||||
console.log(
|
||||
`\n\n------------------${logger.green('↓↓设备锁验证↓↓')}----------------------\n`
|
||||
)
|
||||
const ret = await inquirer.prompt([
|
||||
{
|
||||
type: 'list',
|
||||
|
@ -233,26 +260,37 @@ export default class loginEvent extends EventListener {
|
|||
if (ret.type == '1.网页扫码验证') {
|
||||
console.log('\n' + logger.green(event.url) + '\n')
|
||||
console.log('请打开上面链接,完成验证后按回车')
|
||||
await inquirer.prompt({ type: 'input', message: '等待操作中...', name: 'enter' })
|
||||
await inquirer.prompt({
|
||||
type: 'input',
|
||||
message: '等待操作中...',
|
||||
name: 'enter'
|
||||
})
|
||||
await this.client.login()
|
||||
} else {
|
||||
console.log('\n')
|
||||
this.client.sendSmsCode()
|
||||
await sleep(200)
|
||||
logger.info(`验证码已发送:${event.phone}\n`)
|
||||
let res = await inquirer.prompt({ type: 'input', message: '请输入短信验证码:', name: 'sms' })
|
||||
let res = await inquirer.prompt({
|
||||
type: 'input',
|
||||
message: '请输入短信验证码:',
|
||||
name: 'sms'
|
||||
})
|
||||
await this.client.submitSmsCode(res.sms)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录错误
|
||||
* @param event
|
||||
* @param event
|
||||
*/
|
||||
error(event) {
|
||||
if (Number(event.code) === 1) logger.error('QQ密码错误,运行命令重新登录:node app login')
|
||||
if (Number(event.code) === 1)
|
||||
logger.error('QQ密码错误,运行命令重新登录:node app login')
|
||||
if (global.inputTicket && event.code == 237) {
|
||||
logger.error(`${logger.red('ticket')}输入错误或者已失效,已停止运行,请重新登录验证`)
|
||||
logger.error(
|
||||
`${logger.red('ticket')}输入错误或者已失效,已停止运行,请重新登录验证`
|
||||
)
|
||||
} else if (event?.message.includes('冻结')) {
|
||||
logger.error('账号已被冻结,已停止运行')
|
||||
} else {
|
|
@ -0,0 +1,24 @@
|
|||
import EventListener from './listener.js'
|
||||
|
||||
/**
|
||||
* 监听群聊消息
|
||||
*/
|
||||
export default class messageEvent extends EventListener {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
constructor() {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
super({ event: 'message', prefix: undefined, once: undefined })
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param e
|
||||
*/
|
||||
async execute(e) {
|
||||
this.plugins.deal(e)
|
||||
}
|
||||
}
|
|
@ -1,26 +1,24 @@
|
|||
import EventListener from '../listener/listener.js'
|
||||
import EventListener from './listener.js'
|
||||
|
||||
/**
|
||||
* 监听群聊消息
|
||||
*/
|
||||
export default class noticeEvent extends EventListener {
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
constructor () {
|
||||
|
||||
constructor() {
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
super({ event: 'notice', prefix: undefined, once: undefined })
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param e
|
||||
*
|
||||
* @param e
|
||||
*/
|
||||
async execute (e) {
|
||||
async execute(e) {
|
||||
this.plugins.deal(e)
|
||||
}
|
||||
}
|
|
@ -1,37 +1,39 @@
|
|||
import EventListener from '../listener/listener.js'
|
||||
import EventListener from './listener.js'
|
||||
import fetch from 'node-fetch'
|
||||
import cfg from '../../config/config.js'
|
||||
import { BOT_NAME } from '../../config/system.js'
|
||||
import cfg from '../config/config.js'
|
||||
import { BOT_NAME } from '../config/system.js'
|
||||
|
||||
/**
|
||||
* 监听下线事件
|
||||
*/
|
||||
export default class offlineEvent extends EventListener {
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
constructor() {
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
super({ event: 'system.offline', prefix: undefined, once: undefined })
|
||||
}
|
||||
|
||||
/**
|
||||
* 默认方法
|
||||
* @param e
|
||||
* @param e
|
||||
*/
|
||||
async execute(e) {
|
||||
logger.mark('掉线了')
|
||||
let config = cfg.getConfig('notice')
|
||||
let title = `${BOT_NAME}(${Bot.nickname})已离线,请关注`
|
||||
if (config.iyuu) {
|
||||
await fetch(`https://iyuu.cn/${config.iyuu}.send?text=${title}&desp=${e.message}`)
|
||||
await fetch(
|
||||
`https://iyuu.cn/${config.iyuu}.send?text=${title}&desp=${e.message}`
|
||||
)
|
||||
}
|
||||
if (config.sct) {
|
||||
await fetch(`https://sctapi.ftqq.com/${config.sct}.send?title=${title}&content=${e.message}`)
|
||||
await fetch(
|
||||
`https://sctapi.ftqq.com/${config.sct}.send?title=${title}&content=${e.message}`
|
||||
)
|
||||
}
|
||||
if (config.feishu_webhook) {
|
||||
let offline_content = {
|
||||
|
@ -41,15 +43,17 @@ export default class offlineEvent extends EventListener {
|
|||
'zh-cn': {
|
||||
title: title,
|
||||
content: [
|
||||
[{
|
||||
tag: "text",
|
||||
text: e.message
|
||||
}]
|
||||
[
|
||||
{
|
||||
tag: 'text',
|
||||
text: e.message
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
await fetch(config.feishu_webhook, {
|
||||
method: 'POST',
|
||||
headers: {
|
|
@ -1,35 +1,35 @@
|
|||
import EventListener from '../listener/listener.js'
|
||||
import cfg from '../../config/config.js'
|
||||
import { relpyPrivate } from '../../core/common.js'
|
||||
import { BOT_NAME } from '../../config/system.js'
|
||||
import EventListener from './listener.js'
|
||||
import cfg from '../config/config.js'
|
||||
import { relpyPrivate } from '../core/common.js'
|
||||
import { BOT_NAME } from '../config/system.js'
|
||||
|
||||
/**
|
||||
* 监听上线事件
|
||||
*/
|
||||
export default class onlineEvent extends EventListener {
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
constructor() {
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
super({
|
||||
event: 'system.online',
|
||||
once: true,
|
||||
prefix: undefined,
|
||||
prefix: undefined
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 默认方法
|
||||
* @param e
|
||||
* @param e
|
||||
*/
|
||||
async execute(e) {
|
||||
logger.mark('----^_^----')
|
||||
logger.mark(logger.green(`${BOT_NAME} 上线成功 版本v${cfg.package.version}`))
|
||||
logger.mark(
|
||||
logger.green(`${BOT_NAME} 上线成功 版本v${cfg.package.version}`)
|
||||
)
|
||||
logger.mark(logger.green('https://github.com/yoimiya-kokomi/Miao-Yunzai'))
|
||||
// logger.mark('-----------')
|
||||
/** 加载插件 */
|
||||
|
@ -40,8 +40,8 @@ export default class onlineEvent extends EventListener {
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @returns
|
||||
*
|
||||
* @returns
|
||||
*/
|
||||
async loginMsg() {
|
||||
if (!cfg.bot.online_msg) return
|
||||
|
@ -56,4 +56,4 @@ export default class onlineEvent extends EventListener {
|
|||
|
||||
setTimeout(() => relpyPrivate(cfg.masterQQ[0], msg), 1000)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -110,5 +110,4 @@ const Handler = {
|
|||
/**
|
||||
*
|
||||
*/
|
||||
export default Handler
|
||||
|
||||
export default Handler
|
|
@ -6,7 +6,7 @@ import { segment } from 'icqq'
|
|||
import chokidar from 'chokidar'
|
||||
import moment from 'moment'
|
||||
import path from 'node:path'
|
||||
import Runtime from '../../core/runtime.js'
|
||||
import Runtime from './runtime.js'
|
||||
import Handler from './handler.js'
|
||||
|
||||
|
||||
|
@ -462,7 +462,7 @@ class PluginsLoader {
|
|||
e.isGuild = true
|
||||
}
|
||||
|
||||
if (e.user_id && cfg.masterQQ.includes(Number(e.user_id) || String(e.user_id))) {
|
||||
if (e.user_id && cfg.masterQQ.includes(String(e.user_id) || String(e.user_id))) {
|
||||
e.isMaster = true
|
||||
}
|
||||
|
||||
|
@ -497,7 +497,7 @@ class PluginsLoader {
|
|||
* @param data.recallMsg 群聊是否撤回消息,0-120秒,0不撤回
|
||||
* @param data.at 是否at用户
|
||||
*/
|
||||
e.reply = async (msg = '', quote = false, data:any = {}) => {
|
||||
e.reply = async (msg:any = '', quote = false, data:any = {}) => {
|
||||
if (!msg) return false
|
||||
|
||||
/** 禁言中 */
|
|
@ -1,6 +1,6 @@
|
|||
import * as common from '../utils/common.js'
|
||||
import cfg from '../config/config.js'
|
||||
import Handler from '../lib/plugins/handler.js'
|
||||
import * as common from '../../utils/common.js'
|
||||
import cfg from '../../config/config.js'
|
||||
import Handler from './handler.js'
|
||||
|
||||
import {
|
||||
gsCfg,
|
||||
|
@ -8,7 +8,7 @@ import {
|
|||
mysInfo as MysInfo,
|
||||
NoteUser,
|
||||
MysUser
|
||||
} from '../mys/index.js'
|
||||
} from '../../mys/index.js'
|
||||
|
||||
/**
|
||||
* ********************
|
|
@ -0,0 +1,24 @@
|
|||
import EventListener from './listener.js'
|
||||
|
||||
/**
|
||||
* 监听群聊消息
|
||||
*/
|
||||
export default class requestEvent extends EventListener {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
constructor() {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
super({ event: 'request', prefix: undefined, once: undefined })
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param e
|
||||
*/
|
||||
async execute(e) {
|
||||
this.plugins.deal(e)
|
||||
}
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
import EventListener from '../listener/listener.js'
|
||||
|
||||
|
||||
/**
|
||||
* 监听群聊消息
|
||||
*/
|
||||
export default class messageEvent extends EventListener {
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
constructor () {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
super({ event: 'message' , prefix: undefined, once: undefined})
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param e
|
||||
*/
|
||||
async execute (e) {
|
||||
this.plugins.deal(e)
|
||||
}
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
import EventListener from '../listener/listener.js'
|
||||
|
||||
/**
|
||||
* 监听群聊消息
|
||||
*/
|
||||
export default class requestEvent extends EventListener {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
constructor () {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
super({ event: 'request' , prefix: undefined, once: undefined})
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param e
|
||||
*/
|
||||
async execute (e) {
|
||||
this.plugins.deal(e)
|
||||
}
|
||||
}
|
|
@ -257,8 +257,24 @@ export default class MysUser extends BaseModel {
|
|||
* @returns {Promise<boolean|{msg: string, uids: *[], status: number}>}
|
||||
*/
|
||||
static async checkCkStatus(ck) {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
if (!ck) {
|
||||
return false
|
||||
}
|
||||
/**
|
||||
*
|
||||
*/
|
||||
let uids = []
|
||||
let err = (msg, status = 2) => {
|
||||
|
||||
/**
|
||||
*
|
||||
* @param msg
|
||||
* @param status
|
||||
* @returns
|
||||
*/
|
||||
const err = (msg, status = 2) => {
|
||||
msg = msg + '\n请退出米游社并重新登录后,再次获取CK'
|
||||
return {
|
||||
status,
|
||||
|
@ -266,18 +282,23 @@ export default class MysUser extends BaseModel {
|
|||
uids
|
||||
}
|
||||
}
|
||||
if (!ck) {
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* *********
|
||||
* tudo
|
||||
* **********
|
||||
*/
|
||||
|
||||
// 检查绑定UID
|
||||
uids = await MysUser.getCkUid(ck, true, true)
|
||||
if (!uids.uids || uids.uids.length === 0) {
|
||||
return err(uids.msg || 'CK失效')
|
||||
}
|
||||
uids = uids.uids
|
||||
let uid = uids[0]
|
||||
let mys = new MysApi(uid + '', ck, { log: false })
|
||||
// uids = await MysUser.getCkUid(ck, true, true)
|
||||
// if (!uids.uids || uids.uids.length === 0) {
|
||||
// return err(uids.msg || 'CK失效')
|
||||
// }
|
||||
// uids = uids.uids
|
||||
|
||||
let uid = uids[0] ?? '0'
|
||||
|
||||
let mys = new MysApi(String(uid), ck, { log: false })
|
||||
// 体力查询
|
||||
let noteRet = await mys.getData('dailyNote')
|
||||
if (noteRet.retcode !== 0 || lodash.isEmpty(noteRet.data)) {
|
||||
|
@ -504,14 +525,21 @@ export default class MysUser extends BaseModel {
|
|||
}
|
||||
|
||||
// 初始化数据
|
||||
async initDB(db = false) {
|
||||
async initDB(db) {
|
||||
// 检查当前实例是否已有数据库连接
|
||||
if (this.db && !db) {
|
||||
return
|
||||
}
|
||||
// tudo
|
||||
// ???
|
||||
db = db && db !== true ? db : await MysUserDB.find(this.ltuid, true)
|
||||
|
||||
// 如果传入了 db 参数且 db 参数不为 true,则使用传入的 db;否则,调用 MysUserDB.find 获取 db
|
||||
if (!db || db === true) {
|
||||
db = await MysUserDB.find(this.ltuid, true)
|
||||
}
|
||||
|
||||
// 设置实例的 db 属性
|
||||
this.db = db
|
||||
|
||||
// 调用 setCkData 方法,并传入 db
|
||||
this.setCkData(db)
|
||||
}
|
||||
|
||||
|
@ -584,9 +612,7 @@ export default class MysUser extends BaseModel {
|
|||
* @returns
|
||||
*/
|
||||
async initCache() {
|
||||
if (!this.ltuid || !this.ck) {
|
||||
return
|
||||
}
|
||||
if (!this.ltuid || !this.ck) return
|
||||
let self = this
|
||||
await MysUtil.eachGame(async game => {
|
||||
let uids = self.uids[game]
|
||||
|
|
|
@ -121,7 +121,11 @@ export default class MysApi {
|
|||
}
|
||||
if (type === 'getFp' && !data?.Getfp) return this._device_fp
|
||||
|
||||
let { url, headers, body } = this.getUrl(type, data)
|
||||
const UrlData = this.getUrl(type, data)
|
||||
|
||||
if (!UrlData) return false
|
||||
|
||||
let { url, headers, body } = UrlData
|
||||
|
||||
if (!url) return false
|
||||
|
||||
|
@ -156,40 +160,37 @@ export default class MysApi {
|
|||
} else {
|
||||
param.method = 'get'
|
||||
}
|
||||
let response = {
|
||||
ok: null,
|
||||
status: null,
|
||||
statusText: null
|
||||
}
|
||||
|
||||
let start = Date.now()
|
||||
|
||||
try {
|
||||
response = await fetch(url, param)
|
||||
const response = await fetch(url, param)
|
||||
if (!response.ok) {
|
||||
logger.error(
|
||||
`[米游社接口][${type}][${this.uid}] ${response.status} ${response.statusText}`
|
||||
)
|
||||
return false
|
||||
}
|
||||
if (this.option.log) {
|
||||
logger.mark(
|
||||
`[米游社接口][${type}][${this.uid}] ${Date.now() - start}ms`
|
||||
)
|
||||
}
|
||||
//
|
||||
const data: {
|
||||
api?: any
|
||||
} = await response.json()
|
||||
if (!data) {
|
||||
logger.mark('mys接口没有返回')
|
||||
return false
|
||||
}
|
||||
data.api = type
|
||||
if (cached) this.cache(data, cacheKey)
|
||||
return data
|
||||
} catch (error) {
|
||||
logger.error(error.toString())
|
||||
return false
|
||||
}
|
||||
|
||||
if (!response.ok) {
|
||||
logger.error(
|
||||
`[米游社接口][${type}][${this.uid}] ${response.status} ${response.statusText}`
|
||||
)
|
||||
return false
|
||||
}
|
||||
if (this.option.log) {
|
||||
logger.mark(`[米游社接口][${type}][${this.uid}] ${Date.now() - start}ms`)
|
||||
}
|
||||
const res = await response.json()
|
||||
|
||||
if (!res) {
|
||||
logger.mark('mys接口没有返回')
|
||||
return false
|
||||
}
|
||||
|
||||
res.api = type
|
||||
|
||||
if (cached) this.cache(res, cacheKey)
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -227,7 +228,8 @@ export default class MysApi {
|
|||
'x-rpc-client_type': client.client_type,
|
||||
'User-Agent': client.User_Agent,
|
||||
'Referer': client.Referer,
|
||||
'DS': this.getDs(query, body)
|
||||
'DS': this.getDs(query, body),
|
||||
'Cookie': null
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@ export default class MysInfo {
|
|||
*/
|
||||
this.mysButton = segment.button([
|
||||
{ text: '米游社', link: 'https://miyoushe.com' }
|
||||
])
|
||||
] as any)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -153,7 +153,7 @@ export default class MysInfo {
|
|||
e.reply(
|
||||
[
|
||||
'尚未绑定uid',
|
||||
segment.button([{ text: '绑定UID', input: '#绑定uid' }])
|
||||
segment.button([{ text: '绑定UID', input: '#绑定uid' }] as any)
|
||||
],
|
||||
false,
|
||||
{ at }
|
||||
|
@ -180,7 +180,7 @@ export default class MysInfo {
|
|||
e.reply(
|
||||
[
|
||||
'请先#绑定uid',
|
||||
segment.button([{ text: '绑定UID', input: '#绑定uid' }])
|
||||
segment.button([{ text: '绑定UID', input: '#绑定uid' }] as any)
|
||||
],
|
||||
false,
|
||||
{ at: at || true }
|
||||
|
@ -207,7 +207,9 @@ export default class MysInfo {
|
|||
e.reply(
|
||||
[
|
||||
'尚未绑定Cookie',
|
||||
segment.button([{ text: 'Cookie帮助', callback: '#Cookie帮助' }])
|
||||
segment.button([
|
||||
{ text: 'Cookie帮助', callback: '#Cookie帮助' }
|
||||
] as any)
|
||||
],
|
||||
false,
|
||||
{ at: selfUser.qq }
|
||||
|
@ -303,7 +305,8 @@ export default class MysInfo {
|
|||
for (let ck of pubCks) {
|
||||
let pubUser = await MysUser.create(ck)
|
||||
if (pubUser) {
|
||||
let ret = await pubUser.initCache({ qq: 'pub' })
|
||||
// await pubUser.initCache({ qq: 'pub' })
|
||||
let ret = await pubUser.initCache()
|
||||
if (ret) {
|
||||
pubCount++
|
||||
}
|
||||
|
@ -419,7 +422,7 @@ export default class MysInfo {
|
|||
this.e.reply(
|
||||
[
|
||||
'请先#绑定uid',
|
||||
segment.button([{ text: '绑定UID', input: '#绑定uid' }])
|
||||
segment.button([{ text: '绑定UID', input: '#绑定uid' }] as any)
|
||||
],
|
||||
false,
|
||||
{ at: true }
|
||||
|
@ -429,7 +432,7 @@ export default class MysInfo {
|
|||
if (!this.ckInfo.ck) {
|
||||
this.e.reply([
|
||||
'暂无可用CK,请绑定更多用户或设置公共ck..',
|
||||
segment.button([{ text: 'Cookie帮助', callback: '#Cookie帮助' }])
|
||||
segment.button([{ text: 'Cookie帮助', callback: '#Cookie帮助' }] as any)
|
||||
])
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue