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 = []
def handler(prefix: str) -> Callable[[Callback], Callback]:
def handler(*prefixes: str) -> Callable[[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 handler_decorator
def handle_message(message_prefix: str) -> Callable[[Callback], Callback]:
def handle_message(*message_prefixes: str) -> Callable[[Callback], Callback]:
return handler(
f'^:(?P<user>[^!]+).* '
f'PRIVMSG #(?P<channel>[^ ]+) '
f':(?P<msg>{message_prefix}.*)',
*(
f'^:(?P<user>[^!]+).* '
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)
@handle_message('!today')
@handle_message('!today', '!project')
def cmd_today(match: Match[str]) -> Response:
return TodayResponse(match)