python ircd using asyncio
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

27 lines
932 B

2 years ago
  1. import logging
  2. from paircd.reply import RPL_CHANNELMODEIS
  3. from paircd.client import Client
  4. from paircd.command_handler import CommandHandler
  5. from paircd.message import Message
  6. from paircd.server import Server
  7. class ModeHandler(CommandHandler):
  8. def __init__(self) -> None:
  9. super().__init__("MODE")
  10. async def handle(self, server: Server, client: Client, msg: Message) -> None:
  11. name = msg.args[0]
  12. if not name.startswith("#"):
  13. client.log("TODO: implement user mode queries", level=logging.WARN)
  14. return
  15. channel = server.get_channel_by_name(name)
  16. modes = "".join(channel.get_modes())
  17. if modes != "":
  18. modes = f"+{modes}"
  19. client.log("TODO: implement channel modes", level=logging.WARN)
  20. client.write_message(Message("MODE", args=[name, modes]))
  21. client.write_message(RPL_CHANNELMODEIS(client.nickname, name, modes, ""))