STRINGS: dict[str, dict[str, str]] = { # /start, /help "welcome": { "en": ( "Telegram Channel Analyzer\n\n" "Analyze any public Telegram channel using AI.\n\n" "Commands:\n" "/analyze @channel — Start analysis\n" "/lang en|ru — Change language\n" "/features — Available focus areas\n" "/prices — Pricing info\n" ), "ru": ( "Анализатор Telegram-каналов\n\n" "Анализ любого публичного канала с помощью ИИ.\n\n" "Команды:\n" "/analyze @channel — Начать анализ\n" "/lang en|ru — Сменить язык\n" "/features — Доступные области анализа\n" "/prices — Информация о ценах\n" ), }, # /analyze "provide_channel": { "en": "Please provide a channel: /analyze @channel", "ru": "Укажите канал: /analyze @канал", }, "bad_channel": { "en": "Could not parse channel name. Use @username or t.me/username.", "ru": "Не удалось разобрать имя канала. Используйте @username или t.me/username.", }, "choose_depth": { "en": "Channel: @{channel}\n\nChoose analysis depth:", "ru": "Канал: @{channel}\n\nВыберите глубину анализа:", }, "choose_focus": { "en": "Select focus areas (tap to toggle, then Done):", "ru": "Выберите области анализа (нажмите для выбора, затем Готово):", }, "choose_model": { "en": "Choose AI model:", "ru": "Выберите модель ИИ:", }, "session_expired": { "en": "Session expired. Please run /analyze again.", "ru": "Сессия истекла. Запустите /analyze снова.", }, "no_focus_selected": { "en": "Please select at least one focus area.", "ru": "Выберите хотя бы одну область анализа.", }, # Depth labels "depth_basic": { "en": "Basic (fast)", "ru": "Базовый (быстрый)", }, "depth_standard": { "en": "Standard", "ru": "Стандартный", }, "depth_full": { "en": "Full (detailed)", "ru": "Полный (детальный)", }, # Focus area labels "focus_psychology": { "en": "Psychology & Influence", "ru": "Психология и влияние", }, "focus_business": { "en": "Business & Monetization", "ru": "Бизнес и монетизация", }, "focus_marketing": { "en": "Marketing & Growth", "ru": "Маркетинг и рост", }, "focus_content": { "en": "Content Strategy", "ru": "Контент-стратегия", }, "focus_audience": { "en": "Audience & Engagement", "ru": "Аудитория и вовлечённость", }, "focus_sentiment": { "en": "Sentiment Analysis", "ru": "Анализ тональности", }, # Analysis progress "fetching": { "en": "Fetching messages...", "ru": "Загрузка сообщений...", }, "fetched_n": { "en": "Fetched {n} messages. Chunking...", "ru": "Загружено {n} сообщений. Разбиение...", }, "chunked": { "en": "{n} messages in {c} chunks. Analyzing...", "ru": "{n} сообщений в {c} частях. Анализ...", }, "analyzing_chunk": { "en": "Analyzing chunk {i}/{total}...", "ru": "Анализ части {i}/{total}...", }, "chunk_done_cooldown": { "en": "Chunk {i}/{total} done. Cooling down 60s...", "ru": "Часть {i}/{total} готова. Пауза 60с...", }, "generating_report": { "en": "Generating final report...", "ru": "Генерация финального отчёта...", }, "sending_report": { "en": "Sending report...", "ru": "Отправка отчёта...", }, "analysis_starting": { "en": "Starting analysis for @{channel}...\n\n{status}", "ru": "Начинаю анализ @{channel}...\n\n{status}", }, # Errors "channel_private": { "en": "Channel is private or does not exist.", "ru": "Канал приватный или не существует.", }, "channel_not_found": { "en": "Channel username not found.", "ru": "Имя канала не найдено.", }, "flood_wait": { "en": "Rate limited by Telegram. Retry in {s}s.", "ru": "Ограничение Telegram. Повторите через {s}с.", }, "fetch_failed": { "en": "Failed to fetch channel: {e}", "ru": "Ошибка получения канала: {e}", }, "no_messages": { "en": "No text messages found in this channel.", "ru": "В канале не найдено текстовых сообщений.", }, "analysis_failed": { "en": "Analysis failed: {e}", "ru": "Ошибка анализа: {e}", }, "internal_error": { "en": "Internal error: Telethon client not configured.", "ru": "Внутренняя ошибка: клиент Telethon не настроен.", }, "rate_limited": { "en": "Rate limited, waiting {s}s...", "ru": "Лимит запросов, ожидание {s}с...", }, # Payment "free_analysis": { "en": "This analysis is free ({used}/{max} free trial).", "ru": "Этот анализ бесплатный ({used}/{max} пробный).", }, "payment_required": { "en": "This analysis costs {price} Stars.", "ru": "Этот анализ стоит {price} Stars.", }, "invoice_title": { "en": "Channel Analysis — {depth}", "ru": "Анализ канала — {depth}", }, "invoice_description": { "en": "Analysis of @{channel} ({depth} depth)", "ru": "Анализ @{channel} ({depth})", }, "payment_success": { "en": "Payment received! Starting analysis...", "ru": "Оплата получена! Начинаю анализ...", }, # /lang "lang_set": { "en": "Language set to English.", "ru": "Язык установлен: Русский.", }, "lang_usage": { "en": "Usage: /lang en or /lang ru", "ru": "Использование: /lang en или /lang ru", }, # /features "features_title": { "en": "Available Focus Areas\n", "ru": "Доступные области анализа\n", }, "features_psychology": { "en": "Psychology & Influence — Persuasion techniques, cognitive biases, emotional triggers", "ru": "Психология и влияние — Техники убеждения, когнитивные искажения, эмоциональные триггеры", }, "features_business": { "en": "Business & Monetization — Revenue models, product placement, conversion patterns", "ru": "Бизнес и монетизация — Модели доходов, продвижение продуктов, воронки конверсии", }, "features_marketing": { "en": "Marketing & Growth — Growth tactics, viral mechanics, audience acquisition", "ru": "Маркетинг и рост — Тактики роста, вирусные механики, привлечение аудитории", }, "features_content": { "en": "Content Strategy — Topics, formats, posting patterns, narrative arcs", "ru": "Контент-стратегия — Темы, форматы, паттерны публикаций, нарративы", }, "features_audience": { "en": "Audience & Engagement — Interaction patterns, community dynamics, engagement drivers", "ru": "Аудитория и вовлечённость — Паттерны взаимодействия, динамика сообщества", }, "features_sentiment": { "en": "Sentiment Analysis — Tone distribution, emotional shifts, sentiment by topic", "ru": "Анализ тональности — Распределение тона, эмоциональные сдвиги, тональность по темам", }, # /prices "prices": { "en": ( "Pricing\n\n" "First analysis is free!\n\n" "• Basic — {basic} Stars\n" "• Standard — {standard} Stars\n" "• Full — {full} Stars\n\n" "Payment via Telegram Stars." ), "ru": ( "Цены\n\n" "Первый анализ бесплатно!\n\n" "• Базовый — {basic} Stars\n" "• Стандартный — {standard} Stars\n" "• Полный — {full} Stars\n\n" "Оплата через Telegram Stars." ), }, # Report download "download_report": { "en": "Download report", "ru": "Скачать отчёт", }, # Done button "done": { "en": "Done", "ru": "Готово", }, }