"""Delivery channels: local file archive (always) + Telegram / Blogger (when configured).""" from __future__ import annotations import logging from us2kr.config import Settings from us2kr.deliver.base import Deliverer, DeliveryError from us2kr.deliver.blogger import BloggerDeliverer from us2kr.deliver.file import FileDeliverer from us2kr.deliver.telegram import TelegramDeliverer log = logging.getLogger(__name__) __all__ = [ "BloggerDeliverer", "Deliverer", "DeliveryError", "FileDeliverer", "TelegramDeliverer", "build_deliverers", ] def build_deliverers(settings: Settings) -> list[Deliverer]: """FileDeliverer always; Telegram / Blogger when fully configured.""" deliverers: list[Deliverer] = [FileDeliverer(settings.reports_dir)] if settings.telegram_enabled: assert settings.telegram_bot_token and settings.telegram_chat_id # guaranteed by telegram_enabled deliverers.append(TelegramDeliverer(settings.telegram_bot_token, settings.telegram_chat_id)) if settings.blogger_enabled: deliverers.append( BloggerDeliverer( settings.blogger_client_id or "", settings.blogger_client_secret or "", settings.blogger_refresh_token or "", settings.blogger_blog_id or "", labels=settings.blogger_labels, ) ) log.info("deliverers: %s", ", ".join(d.name for d in deliverers)) return deliverers