-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfilters.py
46 lines (31 loc) · 1.38 KB
/
filters.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import operator
import os
from functools import reduce
from telegram import Message
from telegram.ext import MessageFilter, Filters
def with_default_filters(*filters):
"""Apply default filters to the given filter classes."""
default_filters = [
Filters.chat(
chat_id=int(os.getenv("CHAT_ID_FROM")),
),
]
return reduce(operator.and_, [*default_filters, *filters])
class _ContainsJobHashTag(MessageFilter):
JOB_HASHTAGS = ["#cv", "#job"]
def filter(self, message: Message) -> bool:
return any([tag in message.text.lower() for tag in self.JOB_HASHTAGS])
class _ContainsDjangoMention(MessageFilter):
def filter(self, message: Message) -> bool:
return "django" in message.text.lower()
class _ForwardedMessageContainsJobHashTag(MessageFilter):
JOB_HASHTAGS = ["#cv", "#job"]
def filter(self, message: Message) -> bool:
return contains_job_hashtag.filter(message.reply_to_message)
class _ForwardedMessageContainsDjangoMention(MessageFilter):
def filter(self, message: Message) -> bool:
return contains_django_mention.filter(message.reply_to_message)
contains_job_hashtag = _ContainsJobHashTag()
contains_django_mention = _ContainsDjangoMention()
forwarded_message_contains_job_hashtag = _ForwardedMessageContainsJobHashTag()
forwarded_message_contains_django_mention = _ForwardedMessageContainsDjangoMention()