import plugin from '../../../lib/plugins/plugin.js' import fs from 'node:fs' import gsCfg from '../model/gsCfg.js' import User from '../model/user.js' export class user extends plugin { constructor (e) { super({ name: '用户绑定', dsc: '米游社ck绑定,游戏uid绑定', event: 'message', priority: 300, rule: [ { reg: '^#*(体力|ck|cookie)帮助', fnc: 'ckHelp' }, { reg: '^(ck|cookie|js)代码$', fnc: 'ckCode' }, { reg: '^#绑定(cookie|ck)$', fnc: 'bingCk' }, { reg: '(.*)_MHYUUID(.*)', event: 'message.private', fnc: 'noLogin' }, { reg: '^#?(原神|星铁)?我的(ck|cookie)$', event: 'message', fnc: 'myCk' }, { reg: '^#?删除(ck|cookie)$', fnc: 'delCk' }, { reg: '^#?(原神|星铁)?(删除|解绑)uid\\s*[0-9]{1,2}$', fnc: 'delUid' }, { reg: '^#(原神|星铁)?绑定(uid|UID)?[1-9][0-9]{8}$', fnc: 'bingUid' }, { reg: '^#(原神|星铁)?(我的)?(uid|UID)[0-9]{0,2}$', fnc: 'showUid' }, { reg: '^#\\s*(检查|我的)*ck(状态)*$', fnc: 'checkCkStatus' } ] }) this.User = new User(e) } async init () { /** 加载旧的绑定ck json */ await this.loadOldData() } /** 接受到消息都会执行一次 */ accept () { if (!this.e.msg) return // 由于手机端米游社网页可能获取不到ltuid 可以尝试在通行证页面获取login_uid if (/(ltoken|ltoken_v2)/.test(this.e.msg) && /(ltuid|login_uid|ltmid_v2)/.test(this.e.msg)) { if (this.e.isGroup) { this.reply('请私聊发送cookie', false, { at: true }) return true } this.e.ck = this.e.msg this.e.msg = '#绑定cookie' return true } if (this.e.msg == '#绑定uid') { this.setContext('saveUid') this.reply('请发送绑定的uid', false, { at: true }) return true } } /** 绑定uid */ saveUid () { if (!this.e.msg) return let uid = this.e.msg.match(/[1|2|5-9][0-9]{8}/g) if (!uid) { this.reply('uid输入错误', false, { at: true }) return } this.e.msg = '#绑定' + this.e.msg this.bingUid() this.finish('saveUid') } /** 未登录ck */ async noLogin () { this.reply('绑定cookie失败\n请先【登录米游社】或【登录通行证】再获取cookie') } /** #ck代码 */ async ckCode () { await this.reply('javascript:(()=>{prompt(\'\',document.cookie)})();') } /** ck帮助 */ async ckHelp () { let set = gsCfg.getConfig('mys', 'set') await this.reply(`Cookie绑定配置教程:${set.cookieDoc}\n获取cookie后【私聊发送】进行绑定`) } /** 绑定ck */ async bingCk () { let set = gsCfg.getConfig('mys', 'set') if (!this.e.ck) { await this.reply(`请【私聊】发送米游社cookie,获取教程:\n${set.cookieDoc}`) return } await this.User.bing() } /** 删除ck */ async delCk () { let msg = await this.User.delCk() await this.reply(msg) } /** 绑定uid */ async bingUid () { await this.User.bingUid() } /** #uid */ async showUid () { let index = this.e.msg.match(/[0-9]{1,2}/g) if (index && index[0]) { await this.User.toggleUid(index[0]) } else { await this.User.showUid() } } async delUid () { let index = this.e.msg.match(/[0-9]{1,2}$/g) let uidIdx = index && index[0] let game = this.e if (uidIdx) { await this.User.delUid(uidIdx, game) } } /** 我的ck */ async myCk () { if (this.e.isGroup) { await this.reply('请私聊查看') return } await this.User.myCk() } /** 加载旧的绑定ck json */ async loadOldData () { await this.User.loadOldDataV2() await this.User.loadOldDataV3() await this.User.loadOldUid() } /** 检查用户CK状态 **/ async checkCkStatus () { await this.User.checkCkStatus() } }