This commit is contained in:
+77
-53
@@ -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 (
|
||||
"🌟 <b>Привет!</b> 🌟\n\n"
|
||||
"Я - информационный бот ВОЛКа. "
|
||||
"Здесь можно подписаться на интересные события будущего конвента - и потом напомнить самому себе, "
|
||||
"что именно показалось интересным.\n\n"
|
||||
)
|
||||
else: # ZILANT
|
||||
return (
|
||||
"🌟 <b>Привет!</b> 🌟\n\n"
|
||||
"Я - информационный бот Зиланткона. "
|
||||
"Здесь можно подписаться на интересные события будущего Зиланта - и я напомню,"
|
||||
"когда их можно будет включить в свой План Захвата Конвента.\n\n"
|
||||
)
|
||||
|
||||
def get_help_text():
|
||||
"""Возвращает текст справки в зависимости от режима"""
|
||||
if BOT_MODE == 'VOLK':
|
||||
return (
|
||||
"ℹ️ <b>Подсказка информ-бота ВОЛКа</b>\n\n"
|
||||
"Я запоминаю, кто чем интересовался, и позволяю "
|
||||
"вспомнить, что именно вызывало интерес.\n\n"
|
||||
"<b>Доступные команды:</b>\n"
|
||||
"• /start - начать работу с ботом (вы уже здесь!)\n"
|
||||
"• /help - показать эту справку\n"
|
||||
"• /home - перейти в основной канал ВОЛКа\n"
|
||||
"• /list - показать текущие подписки\n\n"
|
||||
"Используйте кнопки ниже для быстрого доступа:"
|
||||
)
|
||||
else: # ZILANT
|
||||
return (
|
||||
"ℹ️ <b>Подсказка информ-бота Зиланткона</b>\n\n"
|
||||
"Я запоминаю, кто чем интересовался, и напоминаю, "
|
||||
"когда это становится можно включить в План Захвата.\n\n"
|
||||
"<b>Доступные команды:</b>\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 = (
|
||||
"🌟 <b>Привет!</b> 🌟\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,
|
||||
"📢 <b>Основной канал Зиланткона</b>\n\n",
|
||||
f"📢 <b>Основной канал {channel_name}</b>\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 = (
|
||||
"ℹ️ <b>Подсказка информ-бота Зиланткона</b>\n\n"
|
||||
"Я запоминаю, кто чем интересовался, и напоминаю, "
|
||||
"когда это становится можно включить в План Захвата.\n\n"
|
||||
"<b>Доступные команды:</b>\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 = "📋 <b>Ваши подписки</b>\n\n"
|
||||
@@ -953,16 +990,17 @@ def handle_list(message):
|
||||
# Названия постов выводим подчеркнутыми и жирным шрифтом
|
||||
response += f"• <u><b><a href='{post_link}'>{display_name}</a></b></u>\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" └─ <a href='{event_link}'>{event['name']}</a>\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" └─ <a href='{event_link}'>{event['name']}</a>\n"
|
||||
response += "\n"
|
||||
|
||||
# Добавляем подписки на события
|
||||
if event_subscriptions:
|
||||
# Добавляем подписки на события (только для ZILANT)
|
||||
if BOT_MODE == 'ZILANT' and event_subscriptions:
|
||||
response += "🎭 <b>Мероприятия:</b>\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 = (
|
||||
"ℹ️ <b>Подсказка информ-бота Зиланткона</b>\n\n"
|
||||
"Я запоминаю, кто чем интересовался, и напоминаю, "
|
||||
"когда это становится можно включить в План Захвата.\n\n"
|
||||
"<b>Доступные команды:</b>\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 = "📋 <b>Ваши подписки</b>\n\n"
|
||||
@@ -1062,16 +1090,17 @@ def handle_callback(call):
|
||||
# Названия постов выводим подчеркнутыми и жирным шрифтом
|
||||
response += f"• <u><b><a href='{post_link}'>{display_name}</a></b></u>\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" └─ <a href='{event_link}'>{event['name']}</a>\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" └─ <a href='{event_link}'>{event['name']}</a>\n"
|
||||
response += "\n"
|
||||
|
||||
# Добавляем подписки на события
|
||||
if event_subscriptions:
|
||||
# Добавляем подписки на события (только для ZILANT)
|
||||
if BOT_MODE == 'ZILANT' and event_subscriptions:
|
||||
response += "🎭 <b>Мероприятия:</b>\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 = (
|
||||
"🌟 <b>Привет!</b> 🌟\n\n"
|
||||
"Я - информационный бот Зиланткона. "
|
||||
"Здесь можно подписаться на интересные события будущего Зиланта - и я напомню,"
|
||||
"когда их можно будет включить в свой План Захвата Конвента.\n\n"
|
||||
)
|
||||
welcome_text = get_welcome_text()
|
||||
|
||||
bot.send_message(
|
||||
call.message.chat.id,
|
||||
|
||||
Reference in New Issue
Block a user