up_fail / webhook_handler.py
DmitrMakeev's picture
Update webhook_handler.py
f8935f3 verified
raw
history blame
3.32 kB
# webhook_handler.py
import sqlite3
import json
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 canal FROM contacts WHERE vk_id = ?", (user_id,))
result = cursor.fetchone()
if result:
# Обновляем запись, если пользователь уже существует
canal_data = json.loads(result[0]) if result[0] else {}
canal_data[str(group_id)] = 1
canal_json = json.dumps(canal_data)
cursor.execute("UPDATE contacts SET canal = ? WHERE vk_id = ?", (canal_json, user_id))
else:
# Создаем новую запись, если пользователь не существует
canal_data = {str(group_id): 1}
canal_json = json.dumps(canal_data)
cursor.execute("INSERT INTO contacts (vk_id, canal) VALUES (?, ?)", (user_id, canal_json))
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("SELECT canal FROM contacts WHERE vk_id = ?", (user_id,))
result = cursor.fetchone()
if result:
# Обновляем запись, если пользователь уже существует
canal_data = json.loads(result[0]) if result[0] else {}
canal_data[str(group_id)] = 0
canal_json = json.dumps(canal_data)
cursor.execute("UPDATE contacts SET canal = ? WHERE vk_id = ?", (canal_json, user_id))
else:
# Создаем новую запись, если пользователь не существует
canal_data = {str(group_id): 0}
canal_json = json.dumps(canal_data)
cursor.execute("INSERT INTO contacts (vk_id, canal) VALUES (?, ?)", (user_id, canal_json))
conn.commit()
conn.close()
return 'ok'
# Если тип события неизвестен, возвращаем ошибку
return 'unknown event', 400