From 84cc0573e544b5a80a1c3fe602d07d357fb755c8 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Thu, 25 Dec 2025 23:02:23 +0300 Subject: [PATCH] =?UTF-8?q?[=D0=92=D0=9E=D0=9B=D0=9A]=20=D0=B8=D0=B7=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=84=D0=BE=D1=80=D0=BC?= =?UTF-8?q?=D0=B0=D1=82=D0=B0=20=D0=B2=D1=8B=D0=B4=D0=B0=D1=87=D0=B8=20?= =?UTF-8?q?=D1=81=D1=81=D1=8B=D0=BB=D0=BE=D0=BA=20=D0=BF=D1=80=D0=B8=20?= =?UTF-8?q?=D0=BF=D1=83=D0=B1=D0=BB=D0=B8=D0=BA=D0=B0=D1=86=D0=B8=D0=B8=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 2 +- evtg_publish.py | 75 +++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 68 insertions(+), 9 deletions(-) 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(