File size: 3,323 Bytes
86c8341
 
f8935f3
 
f473aea
 
86c8341
 
 
b8763bd
86c8341
b89a231
d6ef436
b89a231
fbcfeb4
 
f473aea
 
 
 
 
 
f25cc8b
f473aea
 
 
 
f25cc8b
 
 
 
f473aea
 
f25cc8b
 
 
f473aea
 
 
 
b89a231
86c8341
b89a231
d6ef436
b89a231
fbcfeb4
 
f473aea
e4435ed
f473aea
 
 
e4435ed
f25cc8b
e4435ed
 
 
 
f25cc8b
 
 
 
e4435ed
 
f25cc8b
 
 
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
# 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