Fix I18n context for error handlers

This commit is contained in:
Alex Root Junior 2021-10-11 01:29:53 +03:00
parent c3cdd75ede
commit 8c4d4ef30a
2 changed files with 6 additions and 10 deletions

View file

@ -25,9 +25,9 @@ class ErrorsMiddleware(BaseMiddleware):
except (SkipHandler, CancelHandler): # pragma: no cover
raise
except Exception as e:
for router in self.router.chain:
observer = router.observers["error"]
response = await observer.trigger(event, exception=e, **data)
if response is not UNHANDLED:
return response
response = await self.router.propagate_event(
update_type="error", event=event, **data, exception=e
)
if response is not UNHANDLED:
return response
raise

View file

@ -1,4 +1,3 @@
import logging
from abc import ABC, abstractmethod
from typing import Any, Awaitable, Callable, Dict, Optional, Set, cast
@ -12,8 +11,6 @@ from aiogram.dispatcher.fsm.context import FSMContext
from aiogram.types import TelegramObject, User
from aiogram.utils.i18n.core import I18n
logger = logging.getLogger(__name__)
class I18nMiddleware(BaseMiddleware, ABC):
"""
@ -49,7 +46,7 @@ class I18nMiddleware(BaseMiddleware, ABC):
"""
if exclude is None:
exclude = set()
exclude_events = {"update", "error", *exclude}
exclude_events = {"update", *exclude}
for event_name, observer in router.observers.items():
if event_name in exclude_events:
continue
@ -63,7 +60,6 @@ class I18nMiddleware(BaseMiddleware, ABC):
data: Dict[str, Any],
) -> Any:
current_locale = await self.get_locale(event=event, data=data) or self.i18n.default_locale
logger.debug("Detected locale %r", current_locale)
if self.i18n_key:
data[self.i18n_key] = self.i18n