diff --git a/telebot/__init__.py b/telebot/__init__.py
index 504e515..def8983 100644
--- a/telebot/__init__.py
+++ b/telebot/__init__.py
@@ -185,6 +185,7 @@ class TeleBot:
         self.poll_answer_handlers = []
         self.my_chat_member_handlers = []
         self.chat_member_handlers = []
+        self.custom_filters = {}
 
         if apihelper.ENABLE_MIDDLEWARE:
             self.typed_middleware_handlers = {
@@ -3037,8 +3038,16 @@ class TeleBot:
 
         return True
 
-    @staticmethod
-    def _test_filter(message_filter, filter_value, message):
+    def create_filter(self, custom_filter):
+        """
+        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
         :param message_filter: Filter type passed in handler
@@ -3053,6 +3062,7 @@ class TeleBot:
         #         'func': lambda msg: filter_value(msg)
         #     }
         #     return test_cases.get(message_filter, lambda msg: False)(message)
+        
         if message_filter == 'content_types':
             return message.content_type in filter_value
         elif message_filter == 'regexp':
@@ -3064,7 +3074,15 @@ class TeleBot:
         elif message_filter == 'func':
             return filter_value(message)
         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):
         """
diff --git a/telebot/util.py b/telebot/util.py
index f871f09..310f4c5 100644
--- a/telebot/util.py
+++ b/telebot/util.py
@@ -455,3 +455,4 @@ def webhook_google_functions(bot, request):
             return 'Bot FAIL', 400
     else:
         return 'Bot ON'
+