mirror of https://github.com/Nofated095/Q2TG.git
46 lines
1.0 KiB
TypeScript
46 lines
1.0 KiB
TypeScript
import flags from '../constants/flags';
|
|
import { Pair } from '../models/Pair';
|
|
import Instance from '../models/Instance';
|
|
|
|
const displayFlag = (flag: number) => {
|
|
const enabled = [];
|
|
for (const name in flags) {
|
|
const value = flags[name] as any as number;
|
|
if (flag & value) {
|
|
enabled.push(name);
|
|
}
|
|
}
|
|
return ['0b' + flag.toString(2), ...enabled].join('\n');
|
|
};
|
|
|
|
export const editFlags = async (params: string[], target: Pair | Instance) => {
|
|
if (!params.length) {
|
|
return displayFlag(target.flags);
|
|
}
|
|
if (params.length !== 2) return '参数格式错误';
|
|
|
|
let operand = Number(params[1]);
|
|
if (isNaN(operand)) {
|
|
operand = flags[params[1].toUpperCase()];
|
|
}
|
|
if (isNaN(operand)) return 'flag 格式错误';
|
|
|
|
switch (params[0]) {
|
|
case 'add':
|
|
case 'set':
|
|
target.flags |= operand;
|
|
break;
|
|
case 'rm':
|
|
case 'remove':
|
|
case 'del':
|
|
case 'delete':
|
|
target.flags &= ~operand;
|
|
break;
|
|
case 'put':
|
|
target.flags = operand;
|
|
break;
|
|
}
|
|
|
|
return displayFlag(target.flags);
|
|
};
|