diff --git a/.env b/.env
index a4da98c..17b3e17 100644
--- a/.env
+++ b/.env
@@ -95,7 +95,7 @@ MAX_TEXT_LENGTH = 4000
#
PZK_PREFIX = "https://reg.konvent.ru/zk2025/draft/plan/api/add/"
EVT_PREFIX = "https://reg.konvent.ru/zk2025/events/actions/api/"
-DESC_PREFIX = "https://reg.konvent.ru/zk2025/events/actions/"
+# DESC_PREFIX = "https://reg.konvent.ru/zk2025/events/actions/"
# VOLK mode API links
# add category ID (volk24_larp for ex.)
diff --git a/evtg_publish.py b/evtg_publish.py
index f55220f..f2c52a3 100644
--- a/evtg_publish.py
+++ b/evtg_publish.py
@@ -95,9 +95,35 @@ async def tg_post_event(httpx_client, event_data):
try:
# Форматирование текста
tags = format_tags(event_data['tags'])
- unit_name = prepare_text(event_data['unit_name'] or "")
+ unit_name_raw = event_data.get('unit_name') or ""
name = prepare_text(event_data['name'] or "")
+ # Формируем название площадки с возможной ссылкой
+ unit_name = ""
+ if unit_name_raw:
+ unit_tg_id = event_data.get('unit_tg_id')
+ unit_title = event_data.get('unit_title') or unit_name_raw
+ unit_title_escaped = prepare_text(unit_title)
+
+ if unit_tg_id:
+ # Если площадка опубликована, делаем ссылку на сообщение
+ # Используем логику из format_channel_link из tg_mainbot.py
+ if CHANNEL_ID.startswith('@'):
+ # Публичный канал
+ channel_link = f"https://t.me/{CHANNEL_ID[1:]}/{unit_tg_id}"
+ elif CHANNEL_ID.startswith('-100'):
+ # Приватный канал с префиксом -100
+ channel_link = f"https://t.me/c/{CHANNEL_ID[4:]}/{unit_tg_id}"
+ else:
+ # Приватный канал без префикса или другой формат
+ channel_link = f"https://t.me/c/{CHANNEL_ID}/{unit_tg_id}"
+
+ # Формируем ссылку на сообщение
+ unit_name = f'{unit_title_escaped}'
+ else:
+ # Если площадка не опубликована, просто текст
+ unit_name = unit_title_escaped
+
# Получаем и подготавливаем описание события
about_raw = event_data['about']
@@ -116,12 +142,20 @@ async def tg_post_event(httpx_client, event_data):
number = event_data['number']
placeholder_message_id = '0' * 20 # Заполнитель для message_id
- # Формируем ссылки в зависимости от USE_SUBSCRIPTION_BOT
+ # Формируем ссылки в зависимости от USE_SUBSCRIPTION_BOT и наличия DESC_PREFIX
+ links_parts = []
+ if DESC_PREFIX:
+ links_parts.append(f'🔎 Инфо')
if USE_SUBSCRIPTION_BOT:
- links_line_placeholder = f'🔎 Инфо | 📌 Иду | 🔜 Подписка'
+ links_parts.append(f'📌 Иду')
+ links_parts.append(f'🔜 Подписка')
+
+ if links_parts:
+ links_line_placeholder = ' | '.join(links_parts)
+ links_line_length = len(links_line_placeholder)
else:
- links_line_placeholder = f'🔎 Инфо'
- links_line_length = len(links_line_placeholder)
+ links_line_placeholder = ""
+ links_line_length = 0
# Определяем максимальную длину в зависимости от типа сообщения
image_url = event_data['about_social_picture']
@@ -317,11 +351,18 @@ async def tg_post_event(httpx_client, event_data):
raise
# Формируем финальный текст с ссылками
+ links_parts = []
+ if DESC_PREFIX:
+ links_parts.append(f'🔎 Инфо')
if USE_SUBSCRIPTION_BOT:
- links_line = f'🔎 Инфо | 📌 Иду | 🔜 Подписка'
+ links_parts.append(f'📌 Иду')
+ links_parts.append(f'🔜 Подписка')
+
+ if links_parts:
+ links_line = ' | '.join(links_parts)
+ final_text = f"{initial_text}\n\n{links_line}"
else:
- links_line = f'🔎 Инфо'
- final_text = f"{initial_text}\n\n{links_line}"
+ final_text = initial_text
await asyncio.sleep(2)
@@ -566,6 +607,24 @@ async def tg_post_event_by_id(id_event):
logger.info(f"Событие ID {id_event} не найдено или уже опубликовано")
return
+ # Получаем информацию о категории (площадке), если указана unit_name
+ unit_tg_id = None
+ unit_title = None
+ if event.get('unit_name'):
+ cursor.execute("""
+ SELECT TITLE, tg_id
+ FROM categories
+ WHERE ID = %s
+ """, (event['unit_name'],))
+ category = cursor.fetchone()
+ if category:
+ unit_title = category.get('TITLE')
+ unit_tg_id = category.get('tg_id')
+
+ # Добавляем информацию о категории в данные события
+ event['unit_tg_id'] = unit_tg_id
+ event['unit_title'] = unit_title
+
old_message_id = event.get('tg_message_id') # Сохраняем старый ID сообщения
# Создаем httpx клиент с отключенным HTTP/2
httpx_client = httpx.AsyncClient(