| |
| import sqlite3 |
| import json |
|
|
| def handle_webhook(data, key_callback_vk, db_name): |
| |
| 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 |