[feature] command /msg

This commit is contained in:
方而静 2021-03-26 18:23:50 +08:00
parent 19f7274e4b
commit dda6447589
No known key found for this signature in database
GPG Key ID: C4F2853BC3103681

View File

@ -49,13 +49,6 @@ export function run_command(cmd_raw: string, uid: string, users: Map<string, Use
socket.emit('system-message', msg);
};
const request_administrator_access = () => {
if (user.is_administrator) { return true; }
command_reply('You must be an administrator to run this command.');
return false;
};
const safe_find_user = (filter_string: string) => {
let res: string[];
try {
@ -69,6 +62,7 @@ export function run_command(cmd_raw: string, uid: string, users: Map<string, Use
const cmd_set = cmd.split(/\s+/);
const msg = cmd.replace(/^[^\n]+\n/m, '');
const cmd_only = (cmd.match(/(^[^\n]+)\n/m) || Array(2).fill(''))[1];
const command_map: Map<string, (prefix: string) => void> = new Map();
const admin_command_map: Map<string, (prefix: string) => void> = new Map();
@ -183,6 +177,20 @@ export function run_command(cmd_raw: string, uid: string, users: Map<string, Use
send_message({ msg: msg, sender: 'Anonymous User'}, io, socket);
});
command_map.set('msg', (prefix) => {
const filter_string = cmd_only.substring(prefix.length);
const checked_user = safe_find_user(filter_string);
Array
.from(users)
.filter(([id,]) => checked_user.includes(id))
.map(([, { socket }]) => socket)
.forEach(socket => socket.emit('private message', {
type: 'text-message',
data: msg,
sender: user.name,
}));
});
if (user.is_administrator) {
for (let val of admin_command_map) {
const [prefix, executor] = val;