From 142ce0757675cd85d688777429c3cb5e3f4780c7 Mon Sep 17 00:00:00 2001 From: Dan <14043624+delivrance@users.noreply.github.com> Date: Tue, 10 Apr 2018 00:24:03 +0200 Subject: [PATCH] Make handlers accept filters --- pyrogram/client/client.py | 12 ++++++------ pyrogram/client/handler/handler.py | 3 ++- pyrogram/client/handler/message_handler.py | 11 +++++++++-- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/pyrogram/client/client.py b/pyrogram/client/client.py index 3576128a..179b11e2 100644 --- a/pyrogram/client/client.py +++ b/pyrogram/client/client.py @@ -203,15 +203,15 @@ class Client: self.dispatcher = Dispatcher(self, workers) self.update_handler = None - def on(self, handler, group): - def decorator(f): - self.add_handler(handler(f), group) - return f + def on(self, handler, group, filters=None): + def decorator(func): + self.add_handler(handler(func, filters), group) + return func return decorator - def on_message(self, group: int = 0): - return self.on(pyrogram.MessageHandler, group) + def on_message(self, filters=None, group: int = 0): + return self.on(pyrogram.MessageHandler, group, filters) def on_raw_update(self, group: int = 0): return self.on(pyrogram.RawUpdateHandler, group) diff --git a/pyrogram/client/handler/handler.py b/pyrogram/client/handler/handler.py index 5bcde2f9..0e46a205 100644 --- a/pyrogram/client/handler/handler.py +++ b/pyrogram/client/handler/handler.py @@ -18,5 +18,6 @@ class Handler: - def __init__(self, callback: callable): + def __init__(self, callback: callable, filters=None): self.callback = callback + self.filters = filters diff --git a/pyrogram/client/handler/message_handler.py b/pyrogram/client/handler/message_handler.py index 3b751fd7..fdbba245 100644 --- a/pyrogram/client/handler/message_handler.py +++ b/pyrogram/client/handler/message_handler.py @@ -20,5 +20,12 @@ from .handler import Handler class MessageHandler(Handler): - def __init__(self, callback: callable): - super().__init__(callback) + def __init__(self, callback: callable, filters=None): + super().__init__(callback, filters) + + def check(self, message): + return ( + self.filters(message) + if self.filters + else True + )