ZZZ-Plugin/apps/user.js
2024-08-16 22:50:32 +08:00

103 lines
3.2 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 { ZZZPlugin } from '../lib/plugin.js';
import { rulePrefix } from '../lib/common.js';
import settings from '../lib/settings.js';
import common from '../../../lib/common/common.js';
import _ from 'lodash';
export class Panel extends ZZZPlugin {
constructor() {
super({
name: '[ZZZ-Plugin]User',
dsc: 'zzzuser',
event: 'message',
priority: _.get(settings.getConfig('priority'), 'user', 70),
rule: [
{
reg: `${rulePrefix}绑定设备$`,
fnc: 'bindDevice',
},
{
reg: `${rulePrefix}绑定设备帮助$`,
fnc: 'bindDeviceHelp',
},
],
});
}
async bindDevice() {
const uid = await this.getUID();
if (!uid) {
this.reply('未绑定UID');
}
this.setContext('toBindDevice');
await this.reply(
`为UID ${uid}绑定设备,请发送设备信息,或者发送“取消”取消绑定`,
false,
{ at: true, recallMsg: 100 }
);
}
async toBindDevice() {
const ltuid = await this.getLtuid();
if (!ltuid) {
this.reply('未绑定UID');
this.finish('toBindDevice');
return false;
}
const msg = this.e.msg.trim();
if (!msg) {
this.reply('请发送设备信息', false, { at: true, recallMsg: 100 });
return false;
}
if (msg.includes('取消')) {
await this.reply('已取消', false, { at: true, recallMsg: 100 });
this.finish('toBindDevice');
return false;
}
try {
const info = JSON.parse(msg);
if (!info) {
this.reply('设备信息格式错误', false, { at: true, recallMsg: 100 });
return false;
}
if (
!'deviceName' in info ||
!'deviceBoard' in info ||
!'deviceModel' in info ||
!'oaid' in info ||
!'deviceFingerprint' in info ||
!'deviceProduct' in info
) {
this.reply('设备信息格式错误', false, { at: true, recallMsg: 100 });
return false;
}
await redis.del(`ZZZ:DEVICE_FP:${ltuid}:FP`);
await redis.set(`ZZZ:DEVICE_FP:${ltuid}:BIND`, JSON.stringify(info));
const { deviceFp } = await this.getAPI();
if (!deviceFp) {
await this.reply('绑定设备失败');
return false;
}
logger.debug(`[LTUID:${ltuid}]绑定设备成功deviceFp:${deviceFp}`);
await this.reply('绑定设备成功', false, { at: true, recallMsg: 100 });
} catch (error) {
this.reply('设备信息格式错误', false, { at: true, recallMsg: 100 });
return false;
} finally {
this.finish('toBindDevice');
return false;
}
}
async bindDeviceHelp() {
const msgs = [
'绑定设备帮助',
'https://mirror.ghproxy.com/https://raw.githubusercontent.com/forchannot/get_device_info/main/app/build/outputs/apk/debug/app-debug.apk',
'1. 使用常用米游社手机下载以上APK并安装',
'2. 打开后点击按钮复制',
'3. 给机器人发送"%绑定设备"指令',
'4. 机器人会提示发送设备信息',
'5. 粘贴设备信息发送',
'6. 提示绑定成功',
],
msg = msgs.join('\n');
await this.reply(await common.makeForwardMsg(this.e, msg, '绑定设备帮助'));
}
}