"""Runtime error reporting helpers."""

from __future__ import annotations

import logging
import traceback

from telegram import Update
from telegram.error import TelegramError
from telegram.ext import ContextTypes


logger = logging.getLogger("bobi.runtime")


async def report_error(update: object, context: ContextTypes.DEFAULT_TYPE) -> None:
    error = context.error

    if isinstance(error, TelegramError):
        text = str(error).lower()

        if "not modified" in text or "message to delete not found" in text:
            return

    logger.error(
        "Unhandled runtime exception\n%s",
        "".join(traceback.format_exception(type(error), error, error.__traceback__)),
    )

    if isinstance(update, Update) and update.effective_message:
        try:
            await update.effective_message.reply_text("⚠️ Bobi runtime error")
        except TelegramError:
            logger.warning("Failed to notify user about runtime error")
