Как написать скрипт на Python для автоматической отправки уведомлений в Telegram через Bot API?
Автоматическая отправка уведомлений в Telegram через Bot API — популярная задача для мониторинга серверов, оповещений о событиях и автоматизации бизнес-процессов. Рассмотрим пошаговое создание такого скрипта на Python.
**Шаг 1: Создание Telegram-бота**
Откройте Telegram и найдите @BotFather. Отправьте команду /newbot, задайте имя и username бота. После создания вы получите токен вида 123456789:AAF… — сохраните его.
**Шаг 2: Получение chat_id**
Отправьте любое сообщение своему боту, затем перейдите по URL: https://api.telegram.org/bot/getUpdates. В ответе JSON найдите поле chat.id — это ваш chat_id.
**Шаг 3: Установка библиотеки**
Для работы с Bot API удобно использовать библиотеку requests или специализированную python-telegram-bot:
pip install requests
**Шаг 4: Базовый скрипт отправки сообщения**
python
import requests
BOT_TOKEN = ‘ВАШ_ТОКЕН’
CHAT_ID = ‘ВАШ_CHAT_ID’
def send_notification(message: str) -> dict:
url = f’https://api.telegram.org/bot{BOT_TOKEN}/sendMessage’
payload = {
‘chat_id’: CHAT_ID,
‘text’: message,
‘parse_mode’: ‘HTML’
}
response = requests.post(url, data=payload)
return response.json()
if __name__ == ‘__main__’:
result = send_notification(‘Уведомление: Сервер запущен успешно!’)
print(result)
**Шаг 5: Автоматическая отправка по расписанию**
Для периодических уведомлений используйте библиотеку schedule:
pip install schedule
python
import schedule
import time
def job():
send_notification(‘Ежечасная проверка системы: всё в норме.’)
schedule.every().hour.do(job)
while True:
schedule.run_pending()
time.sleep(1)
**Шаг 6: Обработка ошибок и повторные попытки**
Добавьте обработку исключений для надёжности:
python
def send_notification_safe(message: str, retries: int = 3) -> bool:
for attempt in range(retries):
try:
response = requests.post(url, data=payload, timeout=10)
if response.status_code == 200:
return True
except requests.exceptions.RequestException as e:
print(f’Попытка {attempt+1} не удалась: {e}’)
time.sleep(2)
return False
**Дополнительные возможности Bot API:**
— Отправка фото: метод sendPhoto
— Отправка файлов: метод sendDocument
— Inline-кнопки: параметр reply_markup
— Форматирование: parse_mode=’MarkdownV2′ или ‘HTML’
**Рекомендации по безопасности:**
Храните токен в переменных окружения или .env файле, используя библиотеку python-dotenv. Никогда не публикуйте токен в открытом коде.
Такой скрипт легко интегрируется в CI/CD пайплайны, системы мониторинга или любые Python-приложения, требующие отправки оперативных уведомлений.
