DmitrMakeev commited on
Commit
52594e7
·
verified ·
1 Parent(s): b18bf1e

Update webhook_handler.py

Browse files
Files changed (1) hide show
  1. webhook_handler.py +62 -18
webhook_handler.py CHANGED
@@ -1,8 +1,9 @@
1
  # webhook_handler.py
2
  import sqlite3
3
  import json
 
4
 
5
- def handle_webhook(data, key_callback_vk, db_name):
6
  # Преобразуем строку key_callback_vk в JSON
7
  key_callback_dict = json.loads(key_callback_vk)
8
 
@@ -24,20 +25,20 @@ def handle_webhook(data, key_callback_vk, db_name):
24
  cursor = conn.cursor()
25
 
26
  # Проверяем, существует ли запись для данного пользователя
27
- cursor.execute("SELECT canal FROM contacts WHERE vk_id = ?", (user_id,))
28
  result = cursor.fetchone()
29
 
30
  if result:
31
  # Обновляем запись, если пользователь уже существует
32
- canal_data = json.loads(result[0]) if result[0] else {}
33
- canal_data[str(group_id)] = '1'
34
- canal_json = json.dumps(canal_data)
35
- cursor.execute("UPDATE contacts SET canal = ? WHERE vk_id = ?", (canal_json, user_id))
36
  else:
37
  # Создаем новую запись, если пользователь не существует
38
- canal_data = {str(group_id): '1'}
39
- canal_json = json.dumps(canal_data)
40
- cursor.execute("INSERT INTO contacts (vk_id, canal) VALUES (?, ?)", (user_id, canal_json))
41
 
42
  conn.commit()
43
  conn.close()
@@ -55,25 +56,68 @@ def handle_webhook(data, key_callback_vk, db_name):
55
  cursor = conn.cursor()
56
 
57
  # Проверяем, существует ли запись для данного пользователя
58
- cursor.execute("SELECT canal FROM contacts WHERE vk_id = ?", (user_id,))
59
  result = cursor.fetchone()
60
 
61
  if result:
62
  # Обновляем запись, если пользователь уже существует
63
- canal_data = json.loads(result[0]) if result[0] else {}
64
- canal_data[str(group_id)] = '0'
65
- canal_json = json.dumps(canal_data)
66
- cursor.execute("UPDATE contacts SET canal = ? WHERE vk_id = ?", (canal_json, user_id))
67
  else:
68
  # Создаем новую запись, если пользователь не существует
69
- canal_data = {str(group_id): '0'}
70
- canal_json = json.dumps(canal_data)
71
- cursor.execute("INSERT INTO contacts (vk_id, canal) VALUES (?, ?)", (user_id, canal_json))
72
 
73
  conn.commit()
74
  conn.close()
75
 
76
  return 'ok'
77
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  # Если тип события неизвестен, возвращаем ошибку
79
- return 'unknown event', 400
 
 
 
 
 
 
 
 
 
 
 
 
1
  # webhook_handler.py
2
  import sqlite3
3
  import json
4
+ import requests
5
 
6
+ def handle_webhook(data, key_callback_vk, db_name, vk_st_alone):
7
  # Преобразуем строку key_callback_vk в JSON
8
  key_callback_dict = json.loads(key_callback_vk)
9
 
 
25
  cursor = conn.cursor()
26
 
27
  # Проверяем, существует ли запись для данного пользователя
28
+ cursor.execute("SELECT orders FROM contacts WHERE vk_id = ?", (user_id,))
29
  result = cursor.fetchone()
30
 
31
  if result:
32
  # Обновляем запись, если пользователь уже существует
33
+ orders_data = json.loads(result[0]) if result[0] else {}
34
+ orders_data[str(group_id)] = '1'
35
+ orders_json = json.dumps(orders_data)
36
+ cursor.execute("UPDATE contacts SET orders = ? WHERE vk_id = ?", (orders_json, user_id))
37
  else:
38
  # Создаем новую запись, если пользователь не существует
39
+ orders_data = {str(group_id): '1'}
40
+ orders_json = json.dumps(orders_data)
41
+ cursor.execute("INSERT INTO contacts (vk_id, orders) VALUES (?, ?)", (user_id, orders_json))
42
 
43
  conn.commit()
44
  conn.close()
 
56
  cursor = conn.cursor()
57
 
58
  # Проверяем, существует ли запись для данного пользователя
59
+ cursor.execute("SELECT orders FROM contacts WHERE vk_id = ?", (user_id,))
60
  result = cursor.fetchone()
61
 
62
  if result:
63
  # Обновляем запись, если пользователь уже существует
64
+ orders_data = json.loads(result[0]) if result[0] else {}
65
+ orders_data[str(group_id)] = '0'
66
+ orders_json = json.dumps(orders_data)
67
+ cursor.execute("UPDATE contacts SET orders = ? WHERE vk_id = ?", (orders_json, user_id))
68
  else:
69
  # Создаем новую запись, если пользователь не существует
70
+ orders_data = {str(group_id): '0'}
71
+ orders_json = json.dumps(orders_data)
72
+ cursor.execute("INSERT INTO contacts (vk_id, orders) VALUES (?, ?)", (user_id, orders_json))
73
 
74
  conn.commit()
75
  conn.close()
76
 
77
  return 'ok'
78
 
79
+ # Обработка события вступления в закрытую группу
80
+ if data['type'] == 'group_join':
81
+ user_id = data['object']['user_id']
82
+ group_id = data['group_id']
83
+ print(f"User {user_id} requested to join group {group_id}")
84
+
85
+ # Читаем информацию из базы данных
86
+ conn = sqlite3.connect(db_name)
87
+ cursor = conn.cursor()
88
+
89
+ # Проверяем, существует ли запись для данного пользователя
90
+ cursor.execute("SELECT orders FROM contacts WHERE vk_id = ?", (user_id,))
91
+ result = cursor.fetchone()
92
+
93
+ if result:
94
+ # Получаем данные о группе
95
+ orders_data = json.loads(result[0]) if result[0] else {}
96
+ group_status = orders_data.get(str(group_id), 'not')
97
+
98
+ if group_status == 'yes':
99
+ # Одобряем запрос на вступление
100
+ approve_join_request(group_id, user_id, vk_st_alone)
101
+ return 'ok'
102
+ else:
103
+ # Отклоняем запрос на вступление
104
+ return 'not'
105
+ else:
106
+ # Если запись не найдена, отклоняем запрос
107
+ return 'not'
108
+
109
+ conn.close()
110
+
111
  # Если тип события неизвестен, возвращаем ошибку
112
+ return 'unknown event', 400
113
+
114
+ def approve_join_request(group_id, user_id, vk_st_alone):
115
+ url = f'https://api.vk.com/method/groups.approveRequest'
116
+ params = {
117
+ 'group_id': group_id,
118
+ 'user_id': user_id,
119
+ 'access_token': vk_st_alone,
120
+ 'v': '5.131'
121
+ }
122
+ response = requests.get(url, params=params).json()
123
+ return response