настройка отправки сообщения через правильный порт и ключ
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2025-09-29 23:04:50 +03:00
parent af755115c8
commit a5d3b82092
5 changed files with 80 additions and 12 deletions
+42 -8
View File
@@ -8,6 +8,23 @@
2. **Интерфейс в веб-приложении** для отправки сообщений через браузер
3. **Обработку ошибок** и логирование всех операций
## Архитектура системы
Система состоит из двух основных компонентов:
- **Веб-интерфейс** (`db_edit.py`) - работает на порту **5006** (WEBCTRL_PORT)
- **Telegram бот** (`tg_mainbot.py`) - работает на порту **5005** (WEBHOOK_PORT)
API endpoint `/send_message` находится в Telegram боте, поэтому все запросы должны отправляться на порт **5005**.
### Конфигурация портов
Порты настраиваются в файле `.env`:
- `WEBHOOK_PORT` - порт для Telegram бота (по умолчанию 5005)
- `WEBCTRL_PORT` - порт для веб-интерфейса (по умолчанию 5006)
Веб-интерфейс автоматически читает порт бота из переменных окружения и использует его для отправки запросов.
## Использование через веб-интерфейс
В заголовке страницы "Управление постами VK и событиями" добавлены два поля:
@@ -32,6 +49,13 @@
POST /send_message
```
### Заголовки запроса
```
Content-Type: application/json
X-API-Secret-Token: <секретный_токен>
```
### Параметры запроса
```json
@@ -41,6 +65,10 @@ POST /send_message
}
```
### Аутентификация
API защищен секретным токеном, который передается в заголовке `X-API-Secret-Token`. Токен берется из переменной окружения `WEBHOOK_SECRET`.
### Ответы
**Успешная отправка (200):**
@@ -65,13 +93,17 @@ POST /send_message
import requests
def send_telegram_message(user_id, message):
url = "http://localhost:8443/send_message"
url = "http://localhost:5005/send_message"
data = {
"user_id": user_id,
"message": message
}
headers = {
'Content-Type': 'application/json',
'X-API-Secret-Token': 'ваш_секретный_токен'
}
response = requests.post(url, json=data)
response = requests.post(url, json=data, headers=headers)
result = response.json()
if result["success"]:
@@ -84,8 +116,9 @@ def send_telegram_message(user_id, message):
```bash
# Используя curl
curl -X POST http://localhost:8443/send_message \
curl -X POST http://localhost:5005/send_message \
-H "Content-Type: application/json" \
-H "X-API-Secret-Token: ваш_секретный_токен" \
-d '{"user_id": 123456789, "message": "Привет!"}'
# Используя примерный скрипт
@@ -96,11 +129,12 @@ python send_telegram_example.py 123456789 "Привет! Это тестовое
Система обрабатывает следующие типы ошибок:
1. **403 Forbidden** - Пользователь заблокировал бота или не начал с ним диалог
2. **400 Bad Request** - Неверный ID пользователя
3. **429 Too Many Requests** - Превышен лимит отправки сообщений
4. **Пустое сообщение** - Не указан текст сообщения
5. **Неверный формат ID** - user_id не является числом
1. **401 Unauthorized** - Неверный или отсутствующий API токен
2. **403 Forbidden** - Пользователь заблокировал бота или не начал с ним диалог
3. **400 Bad Request** - Неверный ID пользователя или отсутствующие данные
4. **429 Too Many Requests** - Превышен лимит отправки сообщений
5. **Пустое сообщение** - Не указан текст сообщения
6. **Неверный формат ID** - user_id не является числом
Все ошибки логируются в файл логов с указанием типа ошибки и ID пользователя.