Default filters

This commit is contained in:
Alex Root Junior 2018-06-25 03:19:58 +03:00
parent 1ca0be538b
commit b4ecc421e4
3 changed files with 15 additions and 4 deletions

View file

@ -345,9 +345,6 @@ class Dispatcher:
:param state:
:return: decorated function
"""
if content_types is None:
content_types = ContentType.TEXT
filters_set = self.filters_factory.resolve(self.message_handlers,
*custom_filters,
commands=commands,

View file

@ -1,6 +1,8 @@
import re
import typing
from _contextvars import ContextVar
from aiogram import types
from aiogram.dispatcher.filters.filters import BaseFilter
from aiogram.types import CallbackQuery, ContentType, Message
@ -98,6 +100,12 @@ class ContentTypeFilter(BaseFilter):
super().__init__(dispatcher)
self.content_types = content_types
@classmethod
def validate(cls, full_config: typing.Dict[str, typing.Any]):
result = super(ContentTypeFilter, cls).validate(full_config)
if not result:
return {cls.key: types.ContentType.TEXT}
async def check(self, message):
return ContentType.ANY[0] in self.content_types or \
message.content_type in self.content_types
@ -120,6 +128,12 @@ class StateFilter(BaseFilter):
def get_target(self, obj):
return getattr(getattr(obj, 'chat', None), 'id', None), getattr(getattr(obj, 'from_user', None), 'id', None)
@classmethod
def validate(cls, full_config: typing.Dict[str, typing.Any]):
result = super(StateFilter, cls).validate(full_config)
if not result:
return {cls.key: None}
async def check(self, obj):
from ..dispatcher import Dispatcher

View file

@ -130,7 +130,7 @@ class AbstractFilter(abc.ABC):
class BaseFilter(AbstractFilter):
"""
Abstract class for filters with default validator
Base class for filters with default validator
"""
key = None