Spaces:
Running
Running
Update app.py
Browse files
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 |
|