Skip to content

Commit 3bc96b4

Browse files
CyanBookdelivrance
andauthored
Add support for compiled patterns in Filters.regex (pyrogram#468)
* Add support for compiled patterns in Filters.regex and remove extra whitespaces * Update filters.py Co-authored-by: Dan <14043624+delivrance@users.noreply.github.com>
1 parent 4df9357 commit 3bc96b4

1 file changed

Lines changed: 10 additions & 6 deletions

File tree

pyrogram/client/filters/filters.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
1818

1919
import re
20-
from typing import Callable
20+
from typing import Callable, Union
2121

2222
from .filter import Filter
2323
from ..types import Message, CallbackQuery, InlineQuery
@@ -67,7 +67,7 @@ class Filters:
6767

6868
all = create(lambda _, m: True, "AllFilter")
6969
"""Filter all messages."""
70-
70+
7171
me = create(lambda _, m: bool(m.from_user and m.from_user.is_self), "MeFilter")
7272
"""Filter messages generated by you yourself."""
7373

@@ -296,7 +296,7 @@ def func(flt, message):
296296
)
297297

298298
@staticmethod
299-
def regex(pattern: str, flags: int = 0):
299+
def regex(pattern: Union[str, re.Pattern], flags: int = 0):
300300
"""Filter updates that match a given regular expression pattern.
301301
302302
Can be applied to handlers that receive one of the following updates:
@@ -309,8 +309,8 @@ def regex(pattern: str, flags: int = 0):
309309
stored in the ``matches`` field of the update object itself.
310310
311311
Parameters:
312-
pattern (``str``):
313-
The regex pattern as string.
312+
pattern (``str`` | ``Pattern``):
313+
The regex pattern as string or as pre-compiled pattern.
314314
315315
flags (``int``, *optional*):
316316
Regex flags.
@@ -331,7 +331,11 @@ def func(flt, update):
331331

332332
return bool(update.matches)
333333

334-
return create(func, "RegexFilter", p=re.compile(pattern, flags))
334+
return create(
335+
func,
336+
"RegexFilter",
337+
p=pattern if isinstance(pattern, re.Pattern) else re.compile(pattern, flags)
338+
)
335339

336340
# noinspection PyPep8Naming
337341
class user(Filter, set):

0 commit comments

Comments
 (0)