ZZZ-Plugin/apps/user.js
bietiaop 14f24bbd4d 👀👀
2024-08-16 12:00:25 +08:00

86 lines
2.5 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 render from '../lib/render.js';
import { rulePrefix } from '../lib/common.js';
import { getPanelList, refreshPanel, getPanel } from '../lib/avatar.js';
import settings from '../lib/settings.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',
},
],
});
}
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 uid = await this.getUID();
if (!uid) {
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:${uid}:FP`);
await redis.set(`ZZZ:DEVICE_FP:${uid}:BIND`, JSON.stringify(info));
const { deviceFp } = await this.getAPI();
if (!deviceFp) {
await this.reply('绑定设备失败');
return false;
}
logger.debug(`[UID:${uid}]绑定设备成功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;
}
}
}