4.9 KiB
4.9 KiB
Отправка сообщений через Telegram бота
Описание
В проект добавлена возможность отправки сообщений пользователям Telegram через бота по их ID. Функциональность включает:
- API endpoint для отправки сообщений из других скриптов
- Интерфейс в веб-приложении для отправки сообщений через браузер
- Обработку ошибок и логирование всех операций
Использование через веб-интерфейс
В заголовке страницы "Управление постами VK и событиями" добавлены два поля:
- ID пользователя - числовой ID пользователя в Telegram
- Сообщение - текст сообщения для отправки
- Кнопка "Отправить" - отправляет сообщение через бота
Особенности интерфейса:
- Поля проверяются на заполненность перед отправкой
- ID пользователя проверяется на корректность (должен быть числом)
- Поддержка отправки по клавише Enter
- Индикатор загрузки во время отправки
- Автоматическая очистка полей после успешной отправки
Использование через API
Endpoint
POST /send_message
Параметры запроса
{
"user_id": 123456789,
"message": "Текст сообщения"
}
Ответы
Успешная отправка (200):
{
"success": true,
"message": "Сообщение отправлено успешно"
}
Ошибка (400):
{
"success": false,
"error": "Описание ошибки"
}
Пример использования из Python
import requests
def send_telegram_message(user_id, message):
url = "http://localhost:8443/send_message"
data = {
"user_id": user_id,
"message": message
}
response = requests.post(url, json=data)
result = response.json()
if result["success"]:
print("Сообщение отправлено успешно!")
else:
print(f"Ошибка: {result['error']}")
Пример использования из командной строки
# Используя curl
curl -X POST http://localhost:8443/send_message \
-H "Content-Type: application/json" \
-d '{"user_id": 123456789, "message": "Привет!"}'
# Используя примерный скрипт
python send_telegram_example.py 123456789 "Привет! Это тестовое сообщение."
Обработка ошибок
Система обрабатывает следующие типы ошибок:
- 403 Forbidden - Пользователь заблокировал бота или не начал с ним диалог
- 400 Bad Request - Неверный ID пользователя
- 429 Too Many Requests - Превышен лимит отправки сообщений
- Пустое сообщение - Не указан текст сообщения
- Неверный формат ID - user_id не является числом
Все ошибки логируются в файл логов с указанием типа ошибки и ID пользователя.
Логирование
Все операции отправки сообщений записываются в лог с указанием:
- Времени операции
- ID пользователя
- Статуса отправки (успех/ошибка)
- Краткого описания ошибки (при наличии)
Пример записи в логе:
[2024-01-15 10:30:45] [TG_bot] ИНФО: Сообщение отправлено: Привет! Это тестовое сообщение... (Пользователь user_123456789)
Требования
- Telegram бот должен быть запущен и подключен через webhook
- Пользователь должен начать диалог с ботом (отправить команду /start)
- Пользователь не должен заблокировать бота
Безопасность
- API endpoint доступен только для POST запросов
- Проверка корректности входных данных
- Логирование всех попыток отправки для аудита
- Обработка ошибок без раскрытия внутренней информации системы