From 0cfa26152b3db9654fa0ba642ed3185d9851c945 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Sun, 28 Dec 2025 23:20:11 +0300 Subject: [PATCH] =?UTF-8?q?[=D0=92=D0=9E=D0=9B=D0=9A]=20=D0=BF=D0=BE=D0=B4?= =?UTF-8?q?=D0=BA=D0=BB=D1=8E=D1=87=D0=B0=D0=B5=D0=BC=20=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=20=D0=BF=D0=BE=D0=B4=D0=BF=D0=B8=D1=81=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 14 +++- services/testbot-git.service | 2 +- tg_mainbot.py | 130 +++++++++++++++++++++-------------- 3 files changed, 89 insertions(+), 57 deletions(-) diff --git a/.env b/.env index 33d0062..536cc07 100644 --- a/.env +++ b/.env @@ -9,6 +9,11 @@ WORKMODE = "VOLK" +# Webhook Responder-bot +WEBHOOK_URL = "https://bot.aabpro.ru/volk_bot" +WEBHOOK_PORT = 5010 +WEBHOOK_SECRET = "cc0dbc1841660da0b14d7df86ab5e0ed973c" + # Webhook Responder-bot # WEBHOOK_URL = "https://bot.aabpro.ru/testbot" # WEBHOOK_PORT = 5005 @@ -59,8 +64,12 @@ MDB_PW = 'T38tU83r69' POSTER_BOT_TOKEN = "8215624618:AAF6VtqRtFr4twFRTiTjedSDE6txkbIy6rc" # VOLK production bot @VOLK_informer_bot # POSTER_BOT_TOKEN = "8279661544:AAEsJee6icCUn_AbWxhDpk2CLxQhzaartuI" +# VOLK responder bot +RESPONDER_BOT_TOKEN = "8072579275:AAFiyKN1EPPnP5ZVZNTDGEriYJf1xADbfsY" +RESPONDER_BOT_NAME = "@VOLK_responder_bot" + + # @posto_1638_bot -# NOT NEEDED FOR VOLK MODE # RESPONDER_BOT_TOKEN = "8301828103:AAHDuBkw7EUkmMvv5TPpVJaLeeBLu-EB21U" # Zilant info bot # BOT_TOKEN = "7951721805:AAEW6Go9yvOOcJSWjgJZ7E2XLPtii2qG7UU" @@ -72,7 +81,6 @@ POSTER_BOT_TOKEN = "8215624618:AAF6VtqRtFr4twFRTiTjedSDE6txkbIy6rc" # POSTER_BOT_TOKEN = "8115998792:AAHamcNBlTgTXG0Birc1gNbZ5B7z4jMEdik" # RESPONDER_BOT_TOKEN = "7951721805:AAEW6Go9yvOOcJSWjgJZ7E2XLPtii2qG7UU" # RESPONDER_BOT_NAME = "Zilant_info_bot" -# NOT NEEDED FOR VOLK MODE # RESPONDER_BOT_NAME = "posto_1638_bot" # Parameters @@ -126,7 +134,7 @@ AUTO_PUBLISH = true AUTO_PUB_EVT = true PROCESS_EVENT_UPDATES = false PUBLISH_SILENTLY = true -USE_SUBSCRIPTION_BOT = false +USE_SUBSCRIPTION_BOT = true LOG_DEBUG_DATA = false diff --git a/services/testbot-git.service b/services/testbot-git.service index eaf83d7..43b9525 100644 --- a/services/testbot-git.service +++ b/services/testbot-git.service @@ -6,7 +6,7 @@ After=network.target [Service] User=root WorkingDirectory=/opt/testbot-git -ExecStart=/opt/testbot-git/venv/bin/gunicorn --bind 192.168.0.109:5005 --workers 4 wsgi_bot:app +ExecStart=/opt/testbot-git/venv/bin/gunicorn --bind 192.168.0.109:5010 --workers 4 wsgi_bot:app Restart=always [Install] diff --git a/tg_mainbot.py b/tg_mainbot.py index ef79e22..3f33827 100644 --- a/tg_mainbot.py +++ b/tg_mainbot.py @@ -40,6 +40,57 @@ MAX_TEXT_LENGTH = int(os.getenv('MAX_TEXT_LENGTH', 4000)) # Устанавливаем единое ограничение длины текста UNIFIED_MAX_LENGTH = 800 +# Режим работы бота (ZILANT или VOLK) +BOT_MODE = os.getenv('BOT_MODE', 'ZILANT').upper() +if BOT_MODE not in ('ZILANT', 'VOLK'): + logger.warning(f"Неизвестный режим бота: {BOT_MODE}, используем ZILANT") + BOT_MODE = 'ZILANT' +logger.info(f"Режим работы бота: {BOT_MODE}") + +def get_welcome_text(): + """Возвращает приветственный текст в зависимости от режима""" + if BOT_MODE == 'VOLK': + return ( + "🌟 Привет! 🌟\n\n" + "Я - информационный бот ВОЛКа. " + "Здесь можно подписаться на интересные события будущего конвента - и потом напомнить самому себе, " + "что именно показалось интересным.\n\n" + ) + else: # ZILANT + return ( + "🌟 Привет! 🌟\n\n" + "Я - информационный бот Зиланткона. " + "Здесь можно подписаться на интересные события будущего Зиланта - и я напомню," + "когда их можно будет включить в свой План Захвата Конвента.\n\n" + ) + +def get_help_text(): + """Возвращает текст справки в зависимости от режима""" + if BOT_MODE == 'VOLK': + return ( + "ℹ️ Подсказка информ-бота ВОЛКа\n\n" + "Я запоминаю, кто чем интересовался, и позволяю " + "вспомнить, что именно вызывало интерес.\n\n" + "Доступные команды:\n" + "• /start - начать работу с ботом (вы уже здесь!)\n" + "• /help - показать эту справку\n" + "• /home - перейти в основной канал ВОЛКа\n" + "• /list - показать текущие подписки\n\n" + "Используйте кнопки ниже для быстрого доступа:" + ) + else: # ZILANT + return ( + "ℹ️ Подсказка информ-бота Зиланткона\n\n" + "Я запоминаю, кто чем интересовался, и напоминаю, " + "когда это становится можно включить в План Захвата.\n\n" + "Доступные команды:\n" + "• /start - начать работу с ботом (вы уже здесь!)\n" + "• /help - показать эту справку\n" + "• /home - перейти в основной канал Зиланткона\n" + "• /list - показать текущие подписки\n\n" + "Используйте кнопки ниже для быстрого доступа:" + ) + # Извлекаем путь из WEBHOOK_URL if WEBHOOK_URL: try: @@ -853,12 +904,7 @@ def handle_start(message): return # Команда /start без параметров - welcome_text = ( - "🌟 Привет! 🌟\n\n" - "Я - информационный бот Зиланткона. " - "Здесь можно подписаться на интересные события будущего Зиланта - и я напомню," - "когда их можно будет включить в свой План Захвата Конвента.\n\n" - ) + welcome_text = get_welcome_text() bot.send_message( message.chat.id, @@ -877,9 +923,10 @@ def handle_home(message): """Обработчик команды /home - переход в основной канал""" try: channel_link = format_channel_link() + channel_name = "ВОЛКа" if BOT_MODE == 'VOLK' else "Зиланткона" bot.send_message( message.chat.id, - "📢 Основной канал Зиланткона\n\n", + f"📢 Основной канал {channel_name}\n\n", reply_markup=InlineKeyboardMarkup().row( InlineKeyboardButton("📢 Перейти в канал", url=channel_link) ), @@ -895,17 +942,7 @@ def handle_home(message): def handle_help(message): """Обработчик команды /help""" try: - help_text = ( - "ℹ️ Подсказка информ-бота Зиланткона\n\n" - "Я запоминаю, кто чем интересовался, и напоминаю, " - "когда это становится можно включить в План Захвата.\n\n" - "Доступные команды:\n" - "• /start - начать работу с ботом (вы уже здесь!)\n" - "• /help - показать эту справку\n" - "• /home - перейти в основной канал Зиланткона\n" - "• /list - показать текущие подписки\n\n" - "Используйте кнопки ниже для быстрого доступа:" - ) + help_text = get_help_text() bot.send_message( message.chat.id, @@ -928,7 +965,7 @@ def handle_list(message): # Получаем подписки на посты и события post_subscriptions = get_user_subscriptions(user_id) - event_subscriptions = get_user_subscriptions_evt(user_id) + event_subscriptions = get_user_subscriptions_evt(user_id) if BOT_MODE == 'ZILANT' else [] # Формируем ответ response = "📋 Ваши подписки\n\n" @@ -953,16 +990,17 @@ def handle_list(message): # Названия постов выводим подчеркнутыми и жирным шрифтом response += f"• {display_name}\n" - # Получаем связанные мероприятия (только опубликованные) - linked_events = get_linked_events_for_post(post_id) - if linked_events: - for event in linked_events: - event_link = format_channel_link(event['tg_message_id']) - response += f" └─ {event['name']}\n" + # Получаем связанные мероприятия (только опубликованные) - только для ZILANT + if BOT_MODE == 'ZILANT': + linked_events = get_linked_events_for_post(post_id) + if linked_events: + for event in linked_events: + event_link = format_channel_link(event['tg_message_id']) + response += f" └─ {event['name']}\n" response += "\n" - # Добавляем подписки на события - if event_subscriptions: + # Добавляем подписки на события (только для ZILANT) + if BOT_MODE == 'ZILANT' and event_subscriptions: response += "🎭 Мероприятия:\n" for sub in event_subscriptions: event_id = sub['event_id'] @@ -1012,17 +1050,7 @@ def handle_callback(call): if call.data.startswith("cmd_"): command = call.data[4:] if command == "help": - help_text = ( - "ℹ️ Подсказка информ-бота Зиланткона\n\n" - "Я запоминаю, кто чем интересовался, и напоминаю, " - "когда это становится можно включить в План Захвата.\n\n" - "Доступные команды:\n" - "• /start - начать работу с ботом (вы уже здесь!)\n" - "• /help - показать эту справку\n" - "• /home - перейти в основной канал Зиланткона\n" - "• /list - показать текущие подписки\n\n" - "Используйте кнопки ниже для быстрого доступа:" - ) + help_text = get_help_text() bot.send_message( call.message.chat.id, @@ -1037,7 +1065,7 @@ def handle_callback(call): # Получаем подписки на посты и события post_subscriptions = get_user_subscriptions(user_id) - event_subscriptions = get_user_subscriptions_evt(user_id) + event_subscriptions = get_user_subscriptions_evt(user_id) if BOT_MODE == 'ZILANT' else [] # Формируем ответ response = "📋 Ваши подписки\n\n" @@ -1062,16 +1090,17 @@ def handle_callback(call): # Названия постов выводим подчеркнутыми и жирным шрифтом response += f"• {display_name}\n" - # Получаем связанные мероприятия (только опубликованные) - linked_events = get_linked_events_for_post(post_id) - if linked_events: - for event in linked_events: - event_link = format_channel_link(event['tg_message_id']) - response += f" └─ {event['name']}\n" + # Получаем связанные мероприятия (только опубликованные) - только для ZILANT + if BOT_MODE == 'ZILANT': + linked_events = get_linked_events_for_post(post_id) + if linked_events: + for event in linked_events: + event_link = format_channel_link(event['tg_message_id']) + response += f" └─ {event['name']}\n" response += "\n" - # Добавляем подписки на события - if event_subscriptions: + # Добавляем подписки на события (только для ZILANT) + if BOT_MODE == 'ZILANT' and event_subscriptions: response += "🎭 Мероприятия:\n" for sub in event_subscriptions: event_id = sub['event_id'] @@ -1108,12 +1137,7 @@ def handle_callback(call): log_event("list_request", user_info) elif command == "back": # Возврат к главному меню - welcome_text = ( - "🌟 Привет! 🌟\n\n" - "Я - информационный бот Зиланткона. " - "Здесь можно подписаться на интересные события будущего Зиланта - и я напомню," - "когда их можно будет включить в свой План Захвата Конвента.\n\n" - ) + welcome_text = get_welcome_text() bot.send_message( call.message.chat.id,