DmitrMakeev commited on
Commit
1da9d74
·
verified ·
1 Parent(s): 047014e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +63 -0
app.py CHANGED
@@ -1246,7 +1246,70 @@ def getlo_mess():
1246
  logging.error(f"An error occurred: {str(e)}")
1247
  return json.dumps({"error": str(e)}), 500
1248
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1249
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1250
 
1251
 
1252
 
 
1246
  logging.error(f"An error occurred: {str(e)}")
1247
  return json.dumps({"error": str(e)}), 500
1248
 
1249
+ # Запрет на рассылку ВК
1250
+ @app.route('/vk_mess_stop', methods=['POST'])
1251
+ def vk_mess_st():
1252
+ try:
1253
+ logging.debug("Starting vk_mess_stop")
1254
+
1255
+ # Читаем параметры из POST-запроса
1256
+ vkid = request.form.get('vk_id', '')
1257
+ grup_id = request.form.get('grup_id', '') # Сюда придёт номер сообщества от которого отписать от рассылки
1258
+ apps_id = request.form.get('apps_id', '') # Сюда придёт ИД ВК приложения
1259
+ fullUrl = request.form.get('fullUrl', '') # Полный URL, который выдаёт ВКонтакте
1260
+
1261
+ logging.debug(f"Received data: vk_id={vkid}, grup_id={grup_id}, apps_id={apps_id}, fullUrl={fullUrl}")
1262
+
1263
+ # Преобразуем строку в JSON
1264
+ try:
1265
+ api_key_apps_vk_dict = json.loads(api_key_apps_vk)
1266
+ except json.JSONDecodeError as e:
1267
+ logging.error(f"Error decoding JSON: {e}")
1268
+ return jsonify({"status": "invalid"}), 200
1269
+
1270
+ # Проверка подписи для приложения
1271
+ if str(apps_id) not in api_key_apps_vk_dict: # Приводим apps_id к строке
1272
+ logging.error("Invalid apps_id")
1273
+ return json.dumps({"error": "Invalid apps_id"}), 400
1274
 
1275
+ secret = api_key_apps_vk_dict[str(apps_id)] # Приводим apps_id к строке
1276
+ logging.debug(f"Using secret: {secret}")
1277
+
1278
+ # Парсим полный URL для получения параметров запроса
1279
+ query_params = dict(parse_qsl(urlparse(fullUrl).query, keep_blank_values=True))
1280
+ logging.debug(f"Query params for signature check: {query_params}")
1281
+
1282
+ # Проверяем подпись
1283
+ if not is_valid(query=query_params, secret=secret):
1284
+ logging.error("Invalid signature")
1285
+ return json.dumps({"error": "Invalid signature"}), 400
1286
+
1287
+ # Отправка запроса в API ВКонтакте для запрета отправки сообщений от сообщества
1288
+ access_token = 'your_access_token' # Замените на ваш токен доступа
1289
+ url = 'https://api.vk.com/method/messages.denyMessagesFromGroup'
1290
+ params = {
1291
+ 'access_token': access_token,
1292
+ 'group_id': grup_id,
1293
+ 'v': '5.131' # Версия API
1294
+ }
1295
+
1296
+ response = requests.post(url, params=params)
1297
+
1298
+ if response.status_code == 200:
1299
+ result = response.json()
1300
+ if 'response' in result:
1301
+ logging.debug("Сообщения от группы успешно запрещены.")
1302
+ return jsonify({"status": "success"}), 200
1303
+ elif 'error' in result:
1304
+ logging.error(f"Ошибка: {result['error']['error_msg']}")
1305
+ return jsonify({"status": "error", "message": result['error']['error_msg']}), 400
1306
+ else:
1307
+ logging.error(f"Ошибка при отправке запроса: {response.status_code}")
1308
+ return jsonify({"status": "error", "message": "Ошибка при отправке запроса"}), 500
1309
+
1310
+ except Exception as e:
1311
+ logging.error(f"An error occurred: {str(e)}")
1312
+ return json.dumps({"error": str(e)}), 500
1313
 
1314
 
1315