This commit is contained in:
+14
-12
@@ -762,13 +762,15 @@ def send_direct_message(user_id, message_text):
|
||||
|
||||
# Определяем тип ошибки для более информативного ответа
|
||||
if e.error_code == 403:
|
||||
return False, "Пользователь заблокировал бота или не начал с ним диалог"
|
||||
return False, f"Пользователь {user_id} заблокировал бота или не начал с ним диалог. Попросите пользователя отправить команду /start боту."
|
||||
elif e.error_code == 400:
|
||||
return False, "Неверный ID пользователя"
|
||||
return False, f"Неверный ID пользователя: {user_id}. Проверьте правильность ID."
|
||||
elif e.error_code == 429:
|
||||
return False, "Превышен лимит отправки сообщений"
|
||||
return False, f"Превышен лимит отправки сообщений для пользователя {user_id}. Попробуйте позже."
|
||||
elif e.error_code == 404:
|
||||
return False, f"Пользователь {user_id} не найден. Проверьте правильность ID."
|
||||
else:
|
||||
return False, f"Ошибка Telegram: {e.description}"
|
||||
return False, f"Ошибка Telegram API (код {e.error_code}): {e.description}"
|
||||
|
||||
except Exception as e:
|
||||
error_msg = f"Неожиданная ошибка при отправке сообщения: {e}"
|
||||
@@ -1285,42 +1287,42 @@ def send_message_api():
|
||||
if api_token != WEBHOOK_SECRET:
|
||||
logger.warning("Неверный API токен!")
|
||||
log_event("security", "system", message="Попытка доступа к API с неверным токеном")
|
||||
return {"success": False, "error": "Unauthorized"}, 401
|
||||
return {"success": False, "error": "Unauthorized", "error_code": "INVALID_TOKEN"}, 401
|
||||
|
||||
try:
|
||||
data = request.get_json()
|
||||
|
||||
if not data:
|
||||
return {"success": False, "error": "Отсутствуют данные"}, 400
|
||||
return {"success": False, "error": "Отсутствуют данные", "error_code": "NO_DATA"}, 400
|
||||
|
||||
user_id = data.get('user_id')
|
||||
message_text = data.get('message')
|
||||
|
||||
if not user_id:
|
||||
return {"success": False, "error": "Не указан user_id"}, 400
|
||||
return {"success": False, "error": "Не указан user_id", "error_code": "NO_USER_ID"}, 400
|
||||
|
||||
if not message_text:
|
||||
return {"success": False, "error": "Не указан текст сообщения"}, 400
|
||||
return {"success": False, "error": "Не указан текст сообщения", "error_code": "NO_MESSAGE"}, 400
|
||||
|
||||
# Проверяем, что user_id является числом
|
||||
try:
|
||||
user_id = int(user_id)
|
||||
except (ValueError, TypeError):
|
||||
return {"success": False, "error": "user_id должен быть числом"}, 400
|
||||
return {"success": False, "error": "user_id должен быть числом", "error_code": "INVALID_USER_ID"}, 400
|
||||
|
||||
# Отправляем сообщение
|
||||
success, result_message = send_direct_message(user_id, message_text)
|
||||
|
||||
if success:
|
||||
return {"success": True, "message": result_message}, 200
|
||||
return {"success": True, "message": result_message, "user_id": user_id}, 200
|
||||
else:
|
||||
return {"success": False, "error": result_message}, 400
|
||||
return {"success": False, "error": result_message, "user_id": user_id, "error_code": "TELEGRAM_ERROR"}, 400
|
||||
|
||||
except Exception as e:
|
||||
error_msg = f"Ошибка в API отправки сообщений: {e}"
|
||||
logger.error(error_msg)
|
||||
log_event("error", "system", message=error_msg)
|
||||
return {"success": False, "error": "Внутренняя ошибка сервера"}, 500
|
||||
return {"success": False, "error": "Внутренняя ошибка сервера", "error_code": "INTERNAL_ERROR"}, 500
|
||||
|
||||
if __name__ == '__main__':
|
||||
# Логируем запуск бота
|
||||
|
||||
Reference in New Issue
Block a user