diff --git a/CHANGES/1178.feature b/CHANGES/1178.feature new file mode 100644 index 00000000..654e78ae --- /dev/null +++ b/CHANGES/1178.feature @@ -0,0 +1 @@ +Made allowed_updates list to revolve automatically in start_polling method if not set explicitly. diff --git a/aiogram/dispatcher/dispatcher.py b/aiogram/dispatcher/dispatcher.py index 7c6acc7f..64dfac72 100644 --- a/aiogram/dispatcher/dispatcher.py +++ b/aiogram/dispatcher/dispatcher.py @@ -18,6 +18,7 @@ from ..fsm.strategy import FSMStrategy from ..methods import GetUpdates, TelegramMethod from ..methods.base import TelegramType from ..types import Update, User +from ..types.base import UNSET_TYPE, UNSET from ..types.update import UpdateTypeLookupError from ..utils.backoff import Backoff, BackoffConfig from .event.bases import UNHANDLED, SkipHandler @@ -458,7 +459,7 @@ class Dispatcher(Router): polling_timeout: int = 10, handle_as_tasks: bool = True, backoff_config: BackoffConfig = DEFAULT_BACKOFF_CONFIG, - allowed_updates: Optional[List[str]] = None, + allowed_updates: Optional[Union[List[str], UNSET_TYPE]] = UNSET, handle_signals: bool = True, close_bot_session: bool = True, **kwargs: Any, @@ -471,6 +472,7 @@ class Dispatcher(Router): :param handle_as_tasks: Run task for each event and no wait result :param backoff_config: backoff-retry config :param allowed_updates: List of the update types you want your bot to receive + By default, all used update types are enabled (resolved from handlers) :param handle_signals: handle signals (SIGINT/SIGTERM) :param close_bot_session: close bot sessions on shutdown :param kwargs: contextual data @@ -490,6 +492,9 @@ class Dispatcher(Router): if self._stopped_signal is None: self._stopped_signal = Event() + if allowed_updates is UNSET: + allowed_updates = self.resolve_used_update_types() + self._stop_signal.clear() self._stopped_signal.clear() diff --git a/aiogram/types/base.py b/aiogram/types/base.py index 9d24b51e..b057f59a 100644 --- a/aiogram/types/base.py +++ b/aiogram/types/base.py @@ -24,7 +24,8 @@ class MutableTelegramObject(TelegramObject): # special sentinel object which used in situation when None might be a useful value +UNSET: Any = sentinel.UNSET UNSET_PARSE_MODE: Any = sentinel.UNSET_PARSE_MODE -UNSET_DISABLE_WEB_PAGE_PREVIEW = sentinel.UNSET_DISABLE_WEB_PAGE_PREVIEW -UNSET_PROTECT_CONTENT = sentinel.UNSET_PROTECT_CONTENT -UNSET_TYPE = type(sentinel.DEFAULT) +UNSET_DISABLE_WEB_PAGE_PREVIEW: Any = sentinel.UNSET_DISABLE_WEB_PAGE_PREVIEW +UNSET_PROTECT_CONTENT: Any = sentinel.UNSET_PROTECT_CONTENT +UNSET_TYPE: Any = type(UNSET)