diff --git a/tg_mainbot.py b/tg_mainbot.py index 68ba9bd..e5e9c58 100644 --- a/tg_mainbot.py +++ b/tg_mainbot.py @@ -269,6 +269,34 @@ def get_user_subscriptions_evt(user_id): finally: 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): """Сохраняет отметку пользователя в базе данных""" conn = create_db_connection() @@ -878,6 +906,13 @@ def handle_list(message): display_name = f"Анонс ВК {vk_post_id}" response += f"• {display_name}\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" └─ {event['name']}\n" response += "\n" # Добавляем подписки на события @@ -971,6 +1006,13 @@ def handle_callback(call): display_name = f"Анонс ВК {vk_post_id}" response += f"• {display_name}\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" └─ {event['name']}\n" response += "\n" # Добавляем подписки на события