All checks were successful
CI / lint-and-test (push) Successful in 14s
- Introduced a new i18n module for managing translations and language normalization, supporting both Russian and English. - Updated various handlers and services to utilize the new translation functions for user-facing messages, improving user experience based on language preferences. - Enhanced error handling and response messages to be language-aware, ensuring appropriate feedback is provided to users in their preferred language. - Added tests for the i18n module to validate language detection and translation functionality. - Updated the example environment file to include a default language configuration.
22 lines
680 B
Python
22 lines
680 B
Python
"""Global error handler: log exception and notify user."""
|
|
|
|
import logging
|
|
|
|
from telegram import Update
|
|
from telegram.ext import ContextTypes
|
|
|
|
import duty_teller.config as config
|
|
from duty_teller.i18n import get_lang, t
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
async def error_handler(
|
|
update: Update | None, context: ContextTypes.DEFAULT_TYPE
|
|
) -> None:
|
|
logger.exception("Exception while handling an update")
|
|
if isinstance(update, Update) and update.effective_message:
|
|
user = getattr(update, "effective_user", None)
|
|
lang = get_lang(user) if user else config.DEFAULT_LANGUAGE
|
|
await update.effective_message.reply_text(t(lang, "errors.generic"))
|