Allow aliases for commands

This commit is contained in:
Anthony Sottile 2019-08-29 21:19:09 -07:00
parent aec1d42e8a
commit 1caa00add2
1 changed files with 11 additions and 7 deletions

18
bot.py
View File

@ -101,18 +101,22 @@ HANDLERS: List[Tuple[Pattern[str], Callable[[Match[str]], Response]]]
HANDLERS = [] HANDLERS = []
def handler(prefix: str) -> Callable[[Callback], Callback]: def handler(*prefixes: str) -> Callable[[Callback], Callback]:
def handler_decorator(func: Callback) -> Callback: def handler_decorator(func: Callback) -> Callback:
HANDLERS.append((re.compile(prefix + '\r\n$'), func)) for prefix in prefixes:
HANDLERS.append((re.compile(prefix + '\r\n$'), func))
return func return func
return handler_decorator return handler_decorator
def handle_message(message_prefix: str) -> Callable[[Callback], Callback]: def handle_message(*message_prefixes: str) -> Callable[[Callback], Callback]:
return handler( return handler(
f'^:(?P<user>[^!]+).* ' *(
f'PRIVMSG #(?P<channel>[^ ]+) ' f'^:(?P<user>[^!]+).* '
f':(?P<msg>{message_prefix}.*)', f'PRIVMSG #(?P<channel>[^ ]+) '
f':(?P<msg>{message_prefix}.*)'
for message_prefix in message_prefixes
),
) )
@ -209,7 +213,7 @@ class TodayResponse(MessageResponse):
return await super().__call__(config) return await super().__call__(config)
@handle_message('!today') @handle_message('!today', '!project')
def cmd_today(match: Match[str]) -> Response: def cmd_today(match: Match[str]) -> Response:
return TodayResponse(match) return TodayResponse(match)