Как написать скрипт на 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-приложения, требующие отправки оперативных уведомлений.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.