[ВОЛК] изменение формата выдачи ссылок при публикации события
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
@@ -95,7 +95,7 @@ MAX_TEXT_LENGTH = 4000
|
|||||||
#
|
#
|
||||||
PZK_PREFIX = "https://reg.konvent.ru/zk2025/draft/plan/api/add/"
|
PZK_PREFIX = "https://reg.konvent.ru/zk2025/draft/plan/api/add/"
|
||||||
EVT_PREFIX = "https://reg.konvent.ru/zk2025/events/actions/api/"
|
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
|
# VOLK mode API links
|
||||||
# add category ID (volk24_larp for ex.)
|
# add category ID (volk24_larp for ex.)
|
||||||
|
|||||||
+67
-8
@@ -95,9 +95,35 @@ async def tg_post_event(httpx_client, event_data):
|
|||||||
try:
|
try:
|
||||||
# Форматирование текста
|
# Форматирование текста
|
||||||
tags = format_tags(event_data['tags'])
|
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 "")
|
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'<a href="{channel_link}">{unit_title_escaped}</a>'
|
||||||
|
else:
|
||||||
|
# Если площадка не опубликована, просто текст
|
||||||
|
unit_name = unit_title_escaped
|
||||||
|
|
||||||
# Получаем и подготавливаем описание события
|
# Получаем и подготавливаем описание события
|
||||||
about_raw = event_data['about']
|
about_raw = event_data['about']
|
||||||
|
|
||||||
@@ -116,12 +142,20 @@ async def tg_post_event(httpx_client, event_data):
|
|||||||
number = event_data['number']
|
number = event_data['number']
|
||||||
placeholder_message_id = '0' * 20 # Заполнитель для message_id
|
placeholder_message_id = '0' * 20 # Заполнитель для message_id
|
||||||
|
|
||||||
# Формируем ссылки в зависимости от USE_SUBSCRIPTION_BOT
|
# Формируем ссылки в зависимости от USE_SUBSCRIPTION_BOT и наличия DESC_PREFIX
|
||||||
|
links_parts = []
|
||||||
|
if DESC_PREFIX:
|
||||||
|
links_parts.append(f'🔎 <a href="{DESC_PREFIX}{number}/">Инфо</a>')
|
||||||
if USE_SUBSCRIPTION_BOT:
|
if USE_SUBSCRIPTION_BOT:
|
||||||
links_line_placeholder = f'🔎 <a href="{DESC_PREFIX}{number}/">Инфо</a> | 📌 <a href="{PZK_PREFIX}{number}/">Иду</a> | 🔜 <a href="https://t.me/{RESPONDER_BOT_NAME}?start=event_{placeholder_message_id}">Подписка</a>'
|
links_parts.append(f'📌 <a href="{PZK_PREFIX}{number}/">Иду</a>')
|
||||||
else:
|
links_parts.append(f'🔜 <a href="https://t.me/{RESPONDER_BOT_NAME}?start=event_{placeholder_message_id}">Подписка</a>')
|
||||||
links_line_placeholder = f'🔎 <a href="{DESC_PREFIX}{number}/">Инфо</a>'
|
|
||||||
|
if links_parts:
|
||||||
|
links_line_placeholder = ' | '.join(links_parts)
|
||||||
links_line_length = len(links_line_placeholder)
|
links_line_length = len(links_line_placeholder)
|
||||||
|
else:
|
||||||
|
links_line_placeholder = ""
|
||||||
|
links_line_length = 0
|
||||||
|
|
||||||
# Определяем максимальную длину в зависимости от типа сообщения
|
# Определяем максимальную длину в зависимости от типа сообщения
|
||||||
image_url = event_data['about_social_picture']
|
image_url = event_data['about_social_picture']
|
||||||
@@ -317,11 +351,18 @@ async def tg_post_event(httpx_client, event_data):
|
|||||||
raise
|
raise
|
||||||
|
|
||||||
# Формируем финальный текст с ссылками
|
# Формируем финальный текст с ссылками
|
||||||
|
links_parts = []
|
||||||
|
if DESC_PREFIX:
|
||||||
|
links_parts.append(f'🔎 <a href="{DESC_PREFIX}{number}/">Инфо</a>')
|
||||||
if USE_SUBSCRIPTION_BOT:
|
if USE_SUBSCRIPTION_BOT:
|
||||||
links_line = f'🔎 <a href="{DESC_PREFIX}{number}/">Инфо</a> | 📌 <a href="{PZK_PREFIX}{number}/">Иду</a> | 🔜 <a href="https://t.me/{RESPONDER_BOT_NAME}?start=event_{message_id}">Подписка</a>'
|
links_parts.append(f'📌 <a href="{PZK_PREFIX}{number}/">Иду</a>')
|
||||||
else:
|
links_parts.append(f'🔜 <a href="https://t.me/{RESPONDER_BOT_NAME}?start=event_{message_id}">Подписка</a>')
|
||||||
links_line = f'🔎 <a href="{DESC_PREFIX}{number}/">Инфо</a>'
|
|
||||||
|
if links_parts:
|
||||||
|
links_line = ' | '.join(links_parts)
|
||||||
final_text = f"{initial_text}\n\n{links_line}"
|
final_text = f"{initial_text}\n\n{links_line}"
|
||||||
|
else:
|
||||||
|
final_text = initial_text
|
||||||
|
|
||||||
await asyncio.sleep(2)
|
await asyncio.sleep(2)
|
||||||
|
|
||||||
@@ -566,6 +607,24 @@ async def tg_post_event_by_id(id_event):
|
|||||||
logger.info(f"Событие ID {id_event} не найдено или уже опубликовано")
|
logger.info(f"Событие ID {id_event} не найдено или уже опубликовано")
|
||||||
return
|
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 сообщения
|
old_message_id = event.get('tg_message_id') # Сохраняем старый ID сообщения
|
||||||
# Создаем httpx клиент с отключенным HTTP/2
|
# Создаем httpx клиент с отключенным HTTP/2
|
||||||
httpx_client = httpx.AsyncClient(
|
httpx_client = httpx.AsyncClient(
|
||||||
|
|||||||
Reference in New Issue
Block a user