Merge pull request #10 from yoavcaspi/add_flags_to_handler

Add flags to handler
This commit is contained in:
Anthony Sottile 2019-10-19 12:21:12 -07:00 committed by GitHub
commit 3f9cef4d9d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 5 deletions

16
bot.py
View File

@ -101,22 +101,28 @@ HANDLERS: List[Tuple[Pattern[str], Callable[[Match[str]], Response]]]
HANDLERS = []
def handler(*prefixes: str) -> Callable[[Callback], Callback]:
def handler(
*prefixes: str,
flags: re.RegexFlag = re.U,
) -> Callable[[Callback], Callback]:
def handler_decorator(func: Callback) -> Callback:
for prefix in prefixes:
HANDLERS.append((re.compile(prefix + '\r\n$'), func))
HANDLERS.append((re.compile(prefix + '\r\n$', flags=flags), func))
return func
return handler_decorator
def handle_message(*message_prefixes: str) -> Callable[[Callback], Callback]:
def handle_message(
*message_prefixes: str,
flags: re.RegexFlag = re.U,
) -> Callable[[Callback], Callback]:
return handler(
*(
f'^:(?P<user>[^!]+).* '
f'PRIVMSG #(?P<channel>[^ ]+) '
f':(?P<msg>{message_prefix}.*)'
for message_prefix in message_prefixes
),
), flags=flags,
)
@ -311,7 +317,7 @@ def msg_ping(match: Match[str]) -> Response:
return MessageResponse(match, f'PONG {esc(rest)}')
@handle_message(r'.*\b(nano|linux|windows)\b')
@handle_message(r'.*\b(nano|linux|windows)\b', flags=re.IGNORECASE)
def msg_gnu_please(match: Match[str]) -> Response:
msg, word = match[3], match[4]
if f'GNU/{word}' in msg or f'gnu/{word}' in msg: