This commit is contained in:
@@ -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 Responder-bot
|
||||||
# WEBHOOK_URL = "https://bot.aabpro.ru/testbot"
|
# WEBHOOK_URL = "https://bot.aabpro.ru/testbot"
|
||||||
# WEBHOOK_PORT = 5005
|
# WEBHOOK_PORT = 5005
|
||||||
@@ -59,8 +64,12 @@ MDB_PW = 'T38tU83r69'
|
|||||||
POSTER_BOT_TOKEN = "8215624618:AAF6VtqRtFr4twFRTiTjedSDE6txkbIy6rc"
|
POSTER_BOT_TOKEN = "8215624618:AAF6VtqRtFr4twFRTiTjedSDE6txkbIy6rc"
|
||||||
# VOLK production bot @VOLK_informer_bot
|
# VOLK production bot @VOLK_informer_bot
|
||||||
# POSTER_BOT_TOKEN = "8279661544:AAEsJee6icCUn_AbWxhDpk2CLxQhzaartuI"
|
# POSTER_BOT_TOKEN = "8279661544:AAEsJee6icCUn_AbWxhDpk2CLxQhzaartuI"
|
||||||
|
# VOLK responder bot
|
||||||
|
RESPONDER_BOT_TOKEN = "8072579275:AAFiyKN1EPPnP5ZVZNTDGEriYJf1xADbfsY"
|
||||||
|
RESPONDER_BOT_NAME = "@VOLK_responder_bot"
|
||||||
|
|
||||||
|
|
||||||
# @posto_1638_bot
|
# @posto_1638_bot
|
||||||
# NOT NEEDED FOR VOLK MODE
|
|
||||||
# RESPONDER_BOT_TOKEN = "8301828103:AAHDuBkw7EUkmMvv5TPpVJaLeeBLu-EB21U"
|
# RESPONDER_BOT_TOKEN = "8301828103:AAHDuBkw7EUkmMvv5TPpVJaLeeBLu-EB21U"
|
||||||
# Zilant info bot
|
# Zilant info bot
|
||||||
# BOT_TOKEN = "7951721805:AAEW6Go9yvOOcJSWjgJZ7E2XLPtii2qG7UU"
|
# BOT_TOKEN = "7951721805:AAEW6Go9yvOOcJSWjgJZ7E2XLPtii2qG7UU"
|
||||||
@@ -72,7 +81,6 @@ POSTER_BOT_TOKEN = "8215624618:AAF6VtqRtFr4twFRTiTjedSDE6txkbIy6rc"
|
|||||||
# POSTER_BOT_TOKEN = "8115998792:AAHamcNBlTgTXG0Birc1gNbZ5B7z4jMEdik"
|
# POSTER_BOT_TOKEN = "8115998792:AAHamcNBlTgTXG0Birc1gNbZ5B7z4jMEdik"
|
||||||
# RESPONDER_BOT_TOKEN = "7951721805:AAEW6Go9yvOOcJSWjgJZ7E2XLPtii2qG7UU"
|
# RESPONDER_BOT_TOKEN = "7951721805:AAEW6Go9yvOOcJSWjgJZ7E2XLPtii2qG7UU"
|
||||||
# RESPONDER_BOT_NAME = "Zilant_info_bot"
|
# RESPONDER_BOT_NAME = "Zilant_info_bot"
|
||||||
# NOT NEEDED FOR VOLK MODE
|
|
||||||
# RESPONDER_BOT_NAME = "posto_1638_bot"
|
# RESPONDER_BOT_NAME = "posto_1638_bot"
|
||||||
|
|
||||||
# Parameters
|
# Parameters
|
||||||
@@ -126,7 +134,7 @@ AUTO_PUBLISH = true
|
|||||||
AUTO_PUB_EVT = true
|
AUTO_PUB_EVT = true
|
||||||
PROCESS_EVENT_UPDATES = false
|
PROCESS_EVENT_UPDATES = false
|
||||||
PUBLISH_SILENTLY = true
|
PUBLISH_SILENTLY = true
|
||||||
USE_SUBSCRIPTION_BOT = false
|
USE_SUBSCRIPTION_BOT = true
|
||||||
LOG_DEBUG_DATA = false
|
LOG_DEBUG_DATA = false
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ After=network.target
|
|||||||
[Service]
|
[Service]
|
||||||
User=root
|
User=root
|
||||||
WorkingDirectory=/opt/testbot-git
|
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
|
Restart=always
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
|
|||||||
+77
-53
@@ -40,6 +40,57 @@ MAX_TEXT_LENGTH = int(os.getenv('MAX_TEXT_LENGTH', 4000))
|
|||||||
# Устанавливаем единое ограничение длины текста
|
# Устанавливаем единое ограничение длины текста
|
||||||
UNIFIED_MAX_LENGTH = 800
|
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
|
# Извлекаем путь из WEBHOOK_URL
|
||||||
if WEBHOOK_URL:
|
if WEBHOOK_URL:
|
||||||
try:
|
try:
|
||||||
@@ -853,12 +904,7 @@ def handle_start(message):
|
|||||||
return
|
return
|
||||||
|
|
||||||
# Команда /start без параметров
|
# Команда /start без параметров
|
||||||
welcome_text = (
|
welcome_text = get_welcome_text()
|
||||||
"🌟 <b>Привет!</b> 🌟\n\n"
|
|
||||||
"Я - информационный бот Зиланткона. "
|
|
||||||
"Здесь можно подписаться на интересные события будущего Зиланта - и я напомню,"
|
|
||||||
"когда их можно будет включить в свой План Захвата Конвента.\n\n"
|
|
||||||
)
|
|
||||||
|
|
||||||
bot.send_message(
|
bot.send_message(
|
||||||
message.chat.id,
|
message.chat.id,
|
||||||
@@ -877,9 +923,10 @@ def handle_home(message):
|
|||||||
"""Обработчик команды /home - переход в основной канал"""
|
"""Обработчик команды /home - переход в основной канал"""
|
||||||
try:
|
try:
|
||||||
channel_link = format_channel_link()
|
channel_link = format_channel_link()
|
||||||
|
channel_name = "ВОЛКа" if BOT_MODE == 'VOLK' else "Зиланткона"
|
||||||
bot.send_message(
|
bot.send_message(
|
||||||
message.chat.id,
|
message.chat.id,
|
||||||
"📢 <b>Основной канал Зиланткона</b>\n\n",
|
f"📢 <b>Основной канал {channel_name}</b>\n\n",
|
||||||
reply_markup=InlineKeyboardMarkup().row(
|
reply_markup=InlineKeyboardMarkup().row(
|
||||||
InlineKeyboardButton("📢 Перейти в канал", url=channel_link)
|
InlineKeyboardButton("📢 Перейти в канал", url=channel_link)
|
||||||
),
|
),
|
||||||
@@ -895,17 +942,7 @@ def handle_home(message):
|
|||||||
def handle_help(message):
|
def handle_help(message):
|
||||||
"""Обработчик команды /help"""
|
"""Обработчик команды /help"""
|
||||||
try:
|
try:
|
||||||
help_text = (
|
help_text = get_help_text()
|
||||||
"ℹ️ <b>Подсказка информ-бота Зиланткона</b>\n\n"
|
|
||||||
"Я запоминаю, кто чем интересовался, и напоминаю, "
|
|
||||||
"когда это становится можно включить в План Захвата.\n\n"
|
|
||||||
"<b>Доступные команды:</b>\n"
|
|
||||||
"• /start - начать работу с ботом (вы уже здесь!)\n"
|
|
||||||
"• /help - показать эту справку\n"
|
|
||||||
"• /home - перейти в основной канал Зиланткона\n"
|
|
||||||
"• /list - показать текущие подписки\n\n"
|
|
||||||
"Используйте кнопки ниже для быстрого доступа:"
|
|
||||||
)
|
|
||||||
|
|
||||||
bot.send_message(
|
bot.send_message(
|
||||||
message.chat.id,
|
message.chat.id,
|
||||||
@@ -928,7 +965,7 @@ def handle_list(message):
|
|||||||
|
|
||||||
# Получаем подписки на посты и события
|
# Получаем подписки на посты и события
|
||||||
post_subscriptions = get_user_subscriptions(user_id)
|
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"
|
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"
|
response += f"• <u><b><a href='{post_link}'>{display_name}</a></b></u>\n"
|
||||||
|
|
||||||
# Получаем связанные мероприятия (только опубликованные)
|
# Получаем связанные мероприятия (только опубликованные) - только для ZILANT
|
||||||
linked_events = get_linked_events_for_post(post_id)
|
if BOT_MODE == 'ZILANT':
|
||||||
if linked_events:
|
linked_events = get_linked_events_for_post(post_id)
|
||||||
for event in linked_events:
|
if linked_events:
|
||||||
event_link = format_channel_link(event['tg_message_id'])
|
for event in linked_events:
|
||||||
response += f" └─ <a href='{event_link}'>{event['name']}</a>\n"
|
event_link = format_channel_link(event['tg_message_id'])
|
||||||
|
response += f" └─ <a href='{event_link}'>{event['name']}</a>\n"
|
||||||
response += "\n"
|
response += "\n"
|
||||||
|
|
||||||
# Добавляем подписки на события
|
# Добавляем подписки на события (только для ZILANT)
|
||||||
if event_subscriptions:
|
if BOT_MODE == 'ZILANT' and event_subscriptions:
|
||||||
response += "🎭 <b>Мероприятия:</b>\n"
|
response += "🎭 <b>Мероприятия:</b>\n"
|
||||||
for sub in event_subscriptions:
|
for sub in event_subscriptions:
|
||||||
event_id = sub['event_id']
|
event_id = sub['event_id']
|
||||||
@@ -1012,17 +1050,7 @@ def handle_callback(call):
|
|||||||
if call.data.startswith("cmd_"):
|
if call.data.startswith("cmd_"):
|
||||||
command = call.data[4:]
|
command = call.data[4:]
|
||||||
if command == "help":
|
if command == "help":
|
||||||
help_text = (
|
help_text = get_help_text()
|
||||||
"ℹ️ <b>Подсказка информ-бота Зиланткона</b>\n\n"
|
|
||||||
"Я запоминаю, кто чем интересовался, и напоминаю, "
|
|
||||||
"когда это становится можно включить в План Захвата.\n\n"
|
|
||||||
"<b>Доступные команды:</b>\n"
|
|
||||||
"• /start - начать работу с ботом (вы уже здесь!)\n"
|
|
||||||
"• /help - показать эту справку\n"
|
|
||||||
"• /home - перейти в основной канал Зиланткона\n"
|
|
||||||
"• /list - показать текущие подписки\n\n"
|
|
||||||
"Используйте кнопки ниже для быстрого доступа:"
|
|
||||||
)
|
|
||||||
|
|
||||||
bot.send_message(
|
bot.send_message(
|
||||||
call.message.chat.id,
|
call.message.chat.id,
|
||||||
@@ -1037,7 +1065,7 @@ def handle_callback(call):
|
|||||||
|
|
||||||
# Получаем подписки на посты и события
|
# Получаем подписки на посты и события
|
||||||
post_subscriptions = get_user_subscriptions(user_id)
|
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"
|
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"
|
response += f"• <u><b><a href='{post_link}'>{display_name}</a></b></u>\n"
|
||||||
|
|
||||||
# Получаем связанные мероприятия (только опубликованные)
|
# Получаем связанные мероприятия (только опубликованные) - только для ZILANT
|
||||||
linked_events = get_linked_events_for_post(post_id)
|
if BOT_MODE == 'ZILANT':
|
||||||
if linked_events:
|
linked_events = get_linked_events_for_post(post_id)
|
||||||
for event in linked_events:
|
if linked_events:
|
||||||
event_link = format_channel_link(event['tg_message_id'])
|
for event in linked_events:
|
||||||
response += f" └─ <a href='{event_link}'>{event['name']}</a>\n"
|
event_link = format_channel_link(event['tg_message_id'])
|
||||||
|
response += f" └─ <a href='{event_link}'>{event['name']}</a>\n"
|
||||||
response += "\n"
|
response += "\n"
|
||||||
|
|
||||||
# Добавляем подписки на события
|
# Добавляем подписки на события (только для ZILANT)
|
||||||
if event_subscriptions:
|
if BOT_MODE == 'ZILANT' and event_subscriptions:
|
||||||
response += "🎭 <b>Мероприятия:</b>\n"
|
response += "🎭 <b>Мероприятия:</b>\n"
|
||||||
for sub in event_subscriptions:
|
for sub in event_subscriptions:
|
||||||
event_id = sub['event_id']
|
event_id = sub['event_id']
|
||||||
@@ -1108,12 +1137,7 @@ def handle_callback(call):
|
|||||||
log_event("list_request", user_info)
|
log_event("list_request", user_info)
|
||||||
elif command == "back":
|
elif command == "back":
|
||||||
# Возврат к главному меню
|
# Возврат к главному меню
|
||||||
welcome_text = (
|
welcome_text = get_welcome_text()
|
||||||
"🌟 <b>Привет!</b> 🌟\n\n"
|
|
||||||
"Я - информационный бот Зиланткона. "
|
|
||||||
"Здесь можно подписаться на интересные события будущего Зиланта - и я напомню,"
|
|
||||||
"когда их можно будет включить в свой План Захвата Конвента.\n\n"
|
|
||||||
)
|
|
||||||
|
|
||||||
bot.send_message(
|
bot.send_message(
|
||||||
call.message.chat.id,
|
call.message.chat.id,
|
||||||
|
|||||||
Reference in New Issue
Block a user