from logging import WARN
|
|
from typing import Dict
|
|
|
|
from paircd.client import Client
|
|
from paircd.command_handler import CommandHandler
|
|
from paircd.log import log_client
|
|
from paircd.message import Message
|
|
from paircd.server import Server
|
|
|
|
from paircd.handler.join import JOIN
|
|
from paircd.handler.nick import NICK
|
|
from paircd.handler.privmsg import PRIVMSG
|
|
from paircd.handler.user import USER
|
|
|
|
ALL_HANDLERS = [
|
|
JOIN,
|
|
NICK,
|
|
PRIVMSG,
|
|
USER,
|
|
]
|
|
|
|
CMD_HANDLERS: Dict[str, CommandHandler] = {}
|
|
|
|
|
|
def register_cmd_handlers() -> None:
|
|
for handler in ALL_HANDLERS:
|
|
CMD_HANDLERS[handler.cmd] = handler
|
|
|
|
|
|
async def handle_cmd(server: Server, client: Client, msg: Message) -> None:
|
|
if msg.cmd not in CMD_HANDLERS:
|
|
log_client(client, f"used unknown command {msg.cmd}", level=WARN)
|
|
return
|
|
await CMD_HANDLERS[msg.cmd].handler(server, client, msg)
|