Spaces:
Sleeping
Sleeping
# 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 |