mirror of
https://github.com/eternnoir/pyTelegramBotAPI.git
synced 2023-08-10 21:12:57 +03:00
Custom filters
Added new feature - from now you can create your own custom filters
This commit is contained in:
parent
78fb69ded1
commit
ec8975c9e3
@ -185,6 +185,7 @@ class TeleBot:
|
|||||||
self.poll_answer_handlers = []
|
self.poll_answer_handlers = []
|
||||||
self.my_chat_member_handlers = []
|
self.my_chat_member_handlers = []
|
||||||
self.chat_member_handlers = []
|
self.chat_member_handlers = []
|
||||||
|
self.custom_filters = {}
|
||||||
|
|
||||||
if apihelper.ENABLE_MIDDLEWARE:
|
if apihelper.ENABLE_MIDDLEWARE:
|
||||||
self.typed_middleware_handlers = {
|
self.typed_middleware_handlers = {
|
||||||
@ -3037,8 +3038,16 @@ class TeleBot:
|
|||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@staticmethod
|
def create_filter(self, custom_filter):
|
||||||
def _test_filter(message_filter, filter_value, message):
|
"""
|
||||||
|
Create custom filter.
|
||||||
|
:params:
|
||||||
|
custom_filter: Class with check(message) method."""
|
||||||
|
self.custom_filters[custom_filter.key] = custom_filter
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def _test_filter(self, message_filter, filter_value, message):
|
||||||
"""
|
"""
|
||||||
Test filters
|
Test filters
|
||||||
:param message_filter: Filter type passed in handler
|
:param message_filter: Filter type passed in handler
|
||||||
@ -3053,6 +3062,7 @@ class TeleBot:
|
|||||||
# 'func': lambda msg: filter_value(msg)
|
# 'func': lambda msg: filter_value(msg)
|
||||||
# }
|
# }
|
||||||
# return test_cases.get(message_filter, lambda msg: False)(message)
|
# return test_cases.get(message_filter, lambda msg: False)(message)
|
||||||
|
|
||||||
if message_filter == 'content_types':
|
if message_filter == 'content_types':
|
||||||
return message.content_type in filter_value
|
return message.content_type in filter_value
|
||||||
elif message_filter == 'regexp':
|
elif message_filter == 'regexp':
|
||||||
@ -3064,7 +3074,15 @@ class TeleBot:
|
|||||||
elif message_filter == 'func':
|
elif message_filter == 'func':
|
||||||
return filter_value(message)
|
return filter_value(message)
|
||||||
else:
|
else:
|
||||||
return False
|
if message_filter in self.custom_filters:
|
||||||
|
if message_filter in self.custom_filters:
|
||||||
|
filter_check = self.custom_filters.get(message_filter)
|
||||||
|
if filter_value == filter_check.check(message): return True
|
||||||
|
else: return False
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def _notify_command_handlers(self, handlers, new_messages):
|
def _notify_command_handlers(self, handlers, new_messages):
|
||||||
"""
|
"""
|
||||||
|
@ -455,3 +455,4 @@ def webhook_google_functions(bot, request):
|
|||||||
return 'Bot FAIL', 400
|
return 'Bot FAIL', 400
|
||||||
else:
|
else:
|
||||||
return 'Bot ON'
|
return 'Bot ON'
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user