Add methods to register filters and middlewares (#370)

* Add methods to register filters and middlewares

* Fix docstring in filter unregistration method
This commit is contained in:
Abstract-X 2020-06-30 05:53:51 +11:00 committed by GitHub
parent f9c367548f
commit 3d39652e9a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 2 deletions

View file

@ -10,7 +10,8 @@ from aiohttp.helpers import sentinel
from aiogram.utils.deprecated import renamed_argument
from .filters import Command, ContentTypeFilter, ExceptionsFilter, FiltersFactory, HashTag, Regexp, \
RegexpCommandsFilter, StateFilter, Text, IDFilter, AdminFilter, IsReplyFilter, ForwardedMessageFilter
RegexpCommandsFilter, StateFilter, Text, IDFilter, AdminFilter, IsReplyFilter, ForwardedMessageFilter, \
AbstractFilter
from .filters.builtin import IsSenderContact
from .handler import Handler
from .middlewares import MiddlewareManager
@ -1232,3 +1233,35 @@ class Dispatcher(DataMixin, ContextInstanceMixin):
return wrapped
return decorator
def bind_filter(self, callback: typing.Union[typing.Callable, AbstractFilter],
validator: typing.Optional[typing.Callable] = None,
event_handlers: typing.Optional[typing.List[Handler]] = None,
exclude_event_handlers: typing.Optional[typing.Iterable[Handler]] = None):
"""
Register filter
:param callback: callable or subclass of :obj:`AbstractFilter`
:param validator: custom validator.
:param event_handlers: list of instances of :obj:`Handler`
:param exclude_event_handlers: list of excluded event handlers (:obj:`Handler`)
"""
self.filters_factory.bind(callback=callback, validator=validator, event_handlers=event_handlers,
exclude_event_handlers=exclude_event_handlers)
def unbind_filter(self, callback: typing.Union[typing.Callable, AbstractFilter]):
"""
Unregister filter
:param callback: callable of subclass of :obj:`AbstractFilter`
"""
self.filters_factory.unbind(callback=callback)
def setup_middleware(self, middleware):
"""
Setup middleware
:param middleware:
:return:
"""
self.middleware.setup(middleware)

View file

@ -30,7 +30,7 @@ class FiltersFactory:
def unbind(self, callback: typing.Union[typing.Callable, AbstractFilter]):
"""
Unregister callback
Unregister filter
:param callback: callable of subclass of :obj:`AbstractFilter`
"""