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.

23 lines
721 B

  1. from typing import Any, Callable, List
  2. from paircd.message import Message
  3. def reply_fn(cmd: int, tmpl: str) -> Callable:
  4. def fn(target: str, *args: List[Any]) -> Message:
  5. msg = f"{target} {tmpl.format(*args)}"
  6. return Message(cmd=str(cmd), args=[msg])
  7. return fn
  8. # Error replies
  9. ERR_NOSUCHNICK = reply_fn(401, "{0} :No such nick/channel")
  10. ERR_NOSUCHSERVER = reply_fn(402, "{0}: No such server")
  11. # Command responses
  12. RPL_WHOISUSER = reply_fn(311, "{0} {1} {2} * :{3}")
  13. RPL_ENDOFWHO = reply_fn(315, "{0} :End of /WHO list")
  14. RPL_ENDOFWHOIS = reply_fn(318, "{0} :End of /WHOIS list")
  15. RPL_CHANNELMODEIS = reply_fn(324, "{0} {1}{2}")
  16. RPL_WHOREPLY = reply_fn(352, "{0} {1} {2} {3} {4} {5} :{6} {7}")