Download webhook_handler.py from eg-art/up_fail: direct link, hf CLI and curl.
- Browser
- Download file 3.61 kB
-
https://huggingface.co/spaces/eg-art/up_fail/resolve/main/webhook_handler.py
- Command line
-
hf download hf://spaces/eg-art/up_fail/webhook_handler.py
-
curl -L -o webhook_handler.py https://huggingface.co/spaces/eg-art/up_fail/resolve/main/webhook_handler.py
3.61 kB
| # 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 |