Шаг 4 из 6

Код для бота

Всё готово для того, чтобы попробовать отправить сообщение самому себе.

Необходимо установить зависимость:

pip install pyTelegramBotAPI

Чтобы отправить код необходимо вызвать метод send_message у инстанса Telebot:

import telebot

bot = telebot.TeleBot('<ваш_токен>')
bot.send_message('151436083', 'hello')

Первый два аргументы в метод send_message это chat_id и текст сообщение. chat_id это по сути идентификатор пользователя, узнать свой chat_id можно, добавив бота @userinfobot и запустив через команду /start:

Давайте подготовим функцию-callback:

# файл telegram_notify.py

import os
import traceback
import warnings

import telebot
from luigi import Task

CHAT_ID = '<chat_id>'
BOT_TOKEN = os.environ.get('TG_BOT_TOKEN')


def send_notification(task: Task, exception: Exception):
    if BOT_TOKEN is None:
        warnings.warn('TG_BOT_TOKEN is not set')
        # если не задан токен в переменной окружения, то просто выходим, чтобы не ломать
        # работу пайплайна
        return

    bot = telebot.TeleBot(BOT_TOKEN)
    text = (
        f'Упала задача: {task.__class__.__name__}\n'
        f'Исключение: {exception.__class__.__name__}, {traceback.format_exc()}'
    )
    bot.send_message(CHAT_ID, text)

В коде токен для телеграм-бота я пытаюсь получить из переменной окружения TG_BOT_TOKEN. В Linux создать переменную окружения можно следующей командой:

export TG_BOT_TOKEN="<token>"

Код модуля находится в репозитории.

Комментарии