chore(release): 0.4.0
[risinglegends.git] / src / server / chat-commands.ts
1 import { Server, Socket } from 'socket.io';
2 import { Player } from '../shared/player';
3 import { broadcastMessage } from '../shared/message';
4 import { renderChatMessage } from './views/chat';
5 import { Commands } from './chat-commands/';
6
7
8 export async function handleChatCommands(msg: string, player: Player, io: Server, sender: Socket): Promise<void> {
9   const rawCommand = msg.split('/server ')[1];
10
11   let matched = false;
12   Commands.forEach(async command => {
13     if(command.regex.test(rawCommand)) {
14       matched = true;
15       console.log(`${player.username} running command: [${rawCommand}]`);
16       await command.handler(rawCommand, sender, player, io);
17     }
18   });
19
20   if(!matched) {
21     const message = broadcastMessage('server', `Invalid command: [${rawCommand}]`);
22     sender.emit('chat', renderChatMessage(message));
23   }
24 }