More minor refactoring

This commit is contained in:
Suren Khorenyan 2019-08-10 18:41:29 +03:00
parent a78b93c5cd
commit 5846d3a6c2
6 changed files with 42 additions and 24 deletions

View file

@ -85,39 +85,56 @@ class Dispatcher(DataMixin, ContextInstanceMixin):
filters_factory.bind(StateFilter, exclude_event_handlers=[ filters_factory.bind(StateFilter, exclude_event_handlers=[
self.errors_handlers, self.errors_handlers,
self.poll_handlers self.poll_handlers,
]) ])
filters_factory.bind(ContentTypeFilter, event_handlers=[ filters_factory.bind(ContentTypeFilter, event_handlers=[
self.message_handlers, self.edited_message_handlers, self.message_handlers,
self.channel_post_handlers, self.edited_channel_post_handlers, self.edited_message_handlers,
self.channel_post_handlers,
self.edited_channel_post_handlers,
]), ]),
filters_factory.bind(Command, event_handlers=[ filters_factory.bind(Command, event_handlers=[
self.message_handlers, self.edited_message_handlers self.message_handlers,
self.edited_message_handlers
]) ])
filters_factory.bind(Text, event_handlers=[ filters_factory.bind(Text, event_handlers=[
self.message_handlers, self.edited_message_handlers, self.message_handlers,
self.channel_post_handlers, self.edited_channel_post_handlers, self.edited_message_handlers,
self.callback_query_handlers, self.poll_handlers, self.inline_query_handlers, self.channel_post_handlers,
self.edited_channel_post_handlers,
self.callback_query_handlers,
self.poll_handlers,
self.inline_query_handlers,
]) ])
filters_factory.bind(HashTag, event_handlers=[ filters_factory.bind(HashTag, event_handlers=[
self.message_handlers, self.edited_message_handlers, self.message_handlers,
self.channel_post_handlers, self.edited_channel_post_handlers, self.edited_message_handlers,
self.channel_post_handlers,
self.edited_channel_post_handlers,
]) ])
filters_factory.bind(Regexp, event_handlers=[ filters_factory.bind(Regexp, event_handlers=[
self.message_handlers, self.edited_message_handlers, self.message_handlers,
self.channel_post_handlers, self.edited_channel_post_handlers, self.edited_message_handlers,
self.callback_query_handlers, self.poll_handlers, self.inline_query_handlers, self.channel_post_handlers,
self.edited_channel_post_handlers,
self.callback_query_handlers,
self.poll_handlers,
self.inline_query_handlers,
]) ])
filters_factory.bind(RegexpCommandsFilter, event_handlers=[ filters_factory.bind(RegexpCommandsFilter, event_handlers=[
self.message_handlers, self.edited_message_handlers, self.message_handlers,
self.edited_message_handlers,
]) ])
filters_factory.bind(ExceptionsFilter, event_handlers=[ filters_factory.bind(ExceptionsFilter, event_handlers=[
self.errors_handlers, self.errors_handlers,
]) ])
filters_factory.bind(IdFilter, event_handlers=[ filters_factory.bind(IdFilter, event_handlers=[
self.message_handlers, self.edited_message_handlers, self.message_handlers,
self.channel_post_handlers, self.edited_channel_post_handlers, self.edited_message_handlers,
self.callback_query_handlers, self.inline_query_handlers self.channel_post_handlers,
self.edited_channel_post_handlers,
self.callback_query_handlers,
self.inline_query_handlers,
]) ])
def __del__(self): def __del__(self):

View file

@ -27,5 +27,5 @@ __all__ = [
'get_filter_spec', 'get_filter_spec',
'get_filters_spec', 'get_filters_spec',
'execute_filter', 'execute_filter',
'check_filters' 'check_filters',
] ]

View file

@ -558,9 +558,9 @@ class IdFilter(Filter):
if self.user_id and self.chat_id: if self.user_id and self.chat_id:
return user_id in self.user_id and chat_id in self.chat_id return user_id in self.user_id and chat_id in self.chat_id
elif self.user_id: if self.user_id:
return user_id in self.user_id return user_id in self.user_id
elif self.chat_id: if self.chat_id:
return chat_id in self.chat_id return chat_id in self.chat_id
return False return False

View file

@ -70,4 +70,4 @@ class FiltersFactory:
yield filter_ yield filter_
if full_config: if full_config:
raise NameError('Invalid filter name(s): \'' + '\', '.join(full_config.keys()) + '\'') raise NameError("Invalid filter name(s): '" + "', ".join(full_config.keys()) + "'")

View file

@ -82,7 +82,7 @@ class FilterRecord:
Filters record for factory Filters record for factory
""" """
def __init__(self, callback: typing.Callable, def __init__(self, callback: typing.Union[typing.Callable, 'AbstractFilter'],
validator: typing.Optional[typing.Callable] = None, validator: typing.Optional[typing.Callable] = None,
event_handlers: typing.Optional[typing.Iterable[Handler]] = None, event_handlers: typing.Optional[typing.Iterable[Handler]] = None,
exclude_event_handlers: typing.Optional[typing.Iterable[Handler]] = None): exclude_event_handlers: typing.Optional[typing.Iterable[Handler]] = None):

View file

@ -1,7 +1,7 @@
import inspect import inspect
from contextvars import ContextVar from contextvars import ContextVar
from dataclasses import dataclass from dataclasses import dataclass
from typing import Optional, Iterable from typing import Optional, Iterable, List
ctx_data = ContextVar('ctx_handler_data') ctx_data = ContextVar('ctx_handler_data')
current_handler = ContextVar('current_handler') current_handler = ContextVar('current_handler')
@ -41,11 +41,10 @@ class Handler:
self.dispatcher = dispatcher self.dispatcher = dispatcher
self.once = once self.once = once
self.handlers = [] self.handlers: List[Handler.HandlerObj] = []
self.middleware_key = middleware_key self.middleware_key = middleware_key
def register(self, handler, filters=None, index=None): def register(self, handler, filters=None, index=None):
from .filters import get_filters_spec
""" """
Register callback Register callback
@ -55,6 +54,8 @@ class Handler:
:param filters: list of filters :param filters: list of filters
:param index: you can reorder handlers :param index: you can reorder handlers
""" """
from .filters import get_filters_spec
spec = _get_spec(handler) spec = _get_spec(handler)
if filters and not isinstance(filters, (list, tuple, set)): if filters and not isinstance(filters, (list, tuple, set)):