# Разбор списков каналов из конфигурации. # Два независимых списка: # VESTI_BOT_CHANNELS — Telegram-каналы (@dedinit_vesti, ...) # VESTI_GTS_CHANNELS — fediverse-каналы GoToSocial (@kpa39l@dedinit.ru, ...) # Деление по типу канала: алгоритм НЕ угадывает по виду строки (надёжнее конфиг). from .config import settings def resolve_channels(channels: list[str] | None) -> list[str]: """Итоговый список Telegram-каналов для публикации. channels из запроса (MAY переопределять) -> иначе VESTI_BOT_CHANNELS (конфиг). Каналы с префиксом 'gt:' — это fediverse (GoToSocial), НЕ Telegram: отбрасываются. """ if channels: tg = [c.strip() for c in channels if c.strip() and not c.strip().startswith("gt:")] return list(dict.fromkeys(tg)) return list(settings.channels) def resolve_gotosocial_channels(channels: list[str] | None) -> list[str]: """Итоговый список GoToSocial-каналов (fediverse). В запросе fediverse-каналы передаются ПРЕФИКСОМ gt: (например gt:@kpa39l@dedinit.ru), чтобы не смешивать с Telegram-каналами. Если в запросе их нет — берётся VESTI_GTS_CHANNELS из конфига. """ if channels: gts = [c[3:].strip() for c in channels if c.strip().startswith("gt:")] if gts: return list(dict.fromkeys(gts)) return list(settings.gt_social_channels)