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