[feature] command /msg
This commit is contained in:
parent
19f7274e4b
commit
dda6447589
@ -49,13 +49,6 @@ export function run_command(cmd_raw: string, uid: string, users: Map<string, Use
|
|||||||
socket.emit('system-message', msg);
|
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) => {
|
const safe_find_user = (filter_string: string) => {
|
||||||
let res: string[];
|
let res: string[];
|
||||||
try {
|
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 cmd_set = cmd.split(/\s+/);
|
||||||
const msg = cmd.replace(/^[^\n]+\n/m, '');
|
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 command_map: Map<string, (prefix: string) => void> = new Map();
|
||||||
const admin_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);
|
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) {
|
if (user.is_administrator) {
|
||||||
for (let val of admin_command_map) {
|
for (let val of admin_command_map) {
|
||||||
const [prefix, executor] = val;
|
const [prefix, executor] = val;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user