"""
core/auto_resume.py — обработчики FloodWait / Quota для задач.

В standalone-версии нет Telegram-бота для уведомлений, поэтому функции
выставляют поля на акке и логируют один раз — без спама в remote_logs.
"""
import logging
import time

logger = logging.getLogger("telepush.auto_resume")

_QUOTA_LOGGED_UNTIL: dict[str, float] = {}


async def handle_floodwait_join(acc, job, fw_seconds):
    logger.warning("[auto_resume] FloodWait %ds for %s (join)", fw_seconds, acc.phone)
    acc.floodwait_until = time.time() + fw_seconds
    acc.floodwait_seconds = fw_seconds


async def handle_quota_limit_join(acc, job):
    """Квота join исчерпана — ставим аккаунт на сутки, логируем один раз на период."""
    now = time.time()
    pause_until = now + 86400
    try:
        acc.quota_paused_until = pause_until
    except Exception:
        pass
    prev = _QUOTA_LOGGED_UNTIL.get(acc.phone, 0.0)
    if prev <= now:
        logger.warning("[auto_resume] Quota limit for %s (join) — аккаунт на паузе 24ч", acc.phone)
        _QUOTA_LOGGED_UNTIL[acc.phone] = pause_until


async def handle_floodwait_spam(acc, job, fw_seconds):
    logger.warning("[auto_resume] FloodWait %ds for %s (spam)", fw_seconds, acc.phone)
    acc.floodwait_until = time.time() + fw_seconds
    acc.floodwait_seconds = fw_seconds
