subscriptions visualisation in mainbot
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2025-09-28 18:53:10 +03:00
parent f05047c6a0
commit 4ba82c3c7d
+42
View File
@@ -269,6 +269,34 @@ def get_user_subscriptions_evt(user_id):
finally: finally:
conn.close() conn.close()
def get_linked_events_for_post(post_id):
"""Возвращает список мероприятий, связанных с анонсом через таблицу interlinks"""
conn = create_db_connection()
if conn is None:
return []
try:
with conn.cursor() as cursor:
sql = """
SELECT e.name, e.tg_message_id
FROM interlinks i
JOIN events e ON i.event_id = e.id
JOIN posts p ON i.post_id = p.id
WHERE p.tg_message_id = %s AND e.name IS NOT NULL AND e.name != ''
ORDER BY e.name
"""
cursor.execute(sql, (post_id,))
result = cursor.fetchall()
return [{'name': row['name'], 'tg_message_id': row['tg_message_id']} for row in result]
except pymysql.Error as e:
error_msg = f"Ошибка при получении связанных мероприятий: {e}"
logger.error(error_msg)
log_event("error", "system", message=error_msg)
return []
finally:
conn.close()
def save_mark_to_db(post_id, user_id, user_name): def save_mark_to_db(post_id, user_id, user_name):
"""Сохраняет отметку пользователя в базе данных""" """Сохраняет отметку пользователя в базе данных"""
conn = create_db_connection() conn = create_db_connection()
@@ -878,6 +906,13 @@ def handle_list(message):
display_name = f"Анонс ВК {vk_post_id}" display_name = f"Анонс ВК {vk_post_id}"
response += f"• <a href='{post_link}'>{display_name}</a>\n" response += f"• <a href='{post_link}'>{display_name}</a>\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"
response += "\n" response += "\n"
# Добавляем подписки на события # Добавляем подписки на события
@@ -971,6 +1006,13 @@ def handle_callback(call):
display_name = f"Анонс ВК {vk_post_id}" display_name = f"Анонс ВК {vk_post_id}"
response += f"• <a href='{post_link}'>{display_name}</a>\n" response += f"• <a href='{post_link}'>{display_name}</a>\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"
response += "\n" response += "\n"
# Добавляем подписки на события # Добавляем подписки на события