# webhook_handler.py # webhook_handler.py import sqlite3 def handle_webhook(data, key_callback_vk, db_name): # Проверяем тип события if data['type'] == 'confirmation': # Возвращаем подтверждение return key_callback_vk # Обработка события подписки на рассылку if data['type'] == 'message_allow': user_id = data['object']['user_id'] group_id = data['group_id'] print(f"User {user_id} subscribed to the mailing list of group {group_id}") # Записываем информацию о подписке в базу данных conn = sqlite3.connect(db_name) cursor = conn.cursor() # Проверяем, существует ли запись для данного пользователя cursor.execute("SELECT * FROM contacts WHERE vk_id = ?", (user_id,)) result = cursor.fetchone() if result: # Обновляем запись, если пользователь уже существует cursor.execute("UPDATE contacts SET canal = 1 WHERE vk_id = ?", (user_id,)) else: # Создаем новую запись, если пользователь не существует cursor.execute("INSERT INTO contacts (vk_id, canal) VALUES (?, 1)", (user_id,)) conn.commit() conn.close() return 'ok' # Обработка события отписки от рассылки if data['type'] == 'message_deny': user_id = data['object']['user_id'] group_id = data['group_id'] print(f"User {user_id} unsubscribed from the mailing list of group {group_id}") # Удаляем информацию о подписке из базы данных conn = sqlite3.connect(db_name) cursor = conn.cursor() cursor.execute("UPDATE contacts SET canal = NULL WHERE vk_id = ?", (user_id,)) conn.commit() conn.close() return 'ok' # Если тип события неизвестен, возвращаем ошибку return 'unknown event', 400