Files
new_lottery_bot/src/middlewares/runtime.py
Trevor1985 cb35bb12e3
Some checks failed
continuous-integration/drone/push Build is failing
Stabilize staff concurrency and premium emoji; enable verified Drone deployment
2026-09-13 19:48:41 +09:00

39 lines
1.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""Keep sensitive dialogs private and report unexpected failures safely."""
import logging
from aiogram import BaseMiddleware
from aiogram.types import CallbackQuery, Message
from aiogram.exceptions import TelegramBadRequest
logger = logging.getLogger(__name__)
class PrivateDialogMiddleware(BaseMiddleware):
async def __call__(self, handler, event, data):
message = event if isinstance(event, Message) else getattr(event, "message", None)
if message and message.chat.type != "private":
if isinstance(event, CallbackQuery):
await event.answer("Откройте личный диалог с ботом", show_alert=True)
return
return await handler(event, data)
class ErrorMiddleware(BaseMiddleware):
async def __call__(self, handler, event, data):
try:
return await handler(event, data)
except TelegramBadRequest as error:
if "message is not modified" in str(error):
if isinstance(event, CallbackQuery):
await event.answer()
return
logger.exception("Telegram rejected a bot response")
except Exception:
logger.exception("Update handler failed")
message = event.message if isinstance(event, CallbackQuery) else event
if message:
try:
await message.answer("Не удалось выполнить действие. Попробуйте ещё раз или отправьте /cancel.")
except Exception:
logger.warning("Failed to deliver error response")