File size: 3,611 Bytes
86c8341 f8935f3 b645845 f473aea 68f5cf5 86c8341 68f5cf5 86c8341 b89a231 d6ef436 b89a231 fbcfeb4 f473aea f25cc8b f473aea b645845 f473aea b645845 f473aea b89a231 86c8341 b89a231 d6ef436 b89a231 fbcfeb4 f473aea e4435ed f473aea e4435ed f25cc8b e4435ed b645845 e4435ed b645845 f473aea 86c8341 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# webhook_handler.py
import sqlite3
import json
def handle_webhook(data, key_callback_vk, db_name):
# Преобразуем строку key_callback_vk в JSON
key_callback_dict = json.loads(key_callback_vk)
# Проверяем тип события
if data['type'] == 'confirmation':
# Получаем номер сообщества из данных
group_id = str(data['group_id'])
# Возвращаем соответствующий пароль
return key_callback_dict.get(group_id, 'unknown')
# Обработка события подписки на рассылку
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 |