Автоматизация
September 19, 2024

Создаём Telegram-бота для напоминаний о дедлайнах в Jira

Если ты работаешь с проектами в Jira, то знаешь, как легко можно упустить важные дедлайны среди массы задач. Чтобы не держать всё в голове и всегда быть в курсе предстоящих сроков, можно настроить автоматические напоминания в Telegram. В этой статье мы разберём, как создать такого бота, который будет уведомлять тебя о приближающихся дедлайнах.

Шаг 1: Создание и настройка бота в Telegram

Для начала создадим бота в Telegram:

  1. Найди в Telegram бота @BotFather и отправь ему команду /start.
  2. Для создания нового бота используй команду /newbot.
  3. Следуй инструкциям: придумай имя и уникальный username для бота.
  4. После успешного создания ты получишь токен доступа. Сохрани его — он понадобится для подключения бота к скрипту.

Шаг 2: Подключение к Jira через API

Чтобы бот мог получать информацию о задачах, необходимо подключиться к API Jira:

  1. Перейди в настройки своей учетной записи Jira и создай API-токен. Для этого нужно зайти в токен-менеджер и нажать на кнопку Create API token.
  2. Сохрани сгенерированный токен. Он будет использоваться для аутентификации.

Шаг 3: Установка необходимых библиотек

Для работы с API Jira и Telegram нам понадобятся несколько Python-библиотек. Установим их через pip:

pip install jira-python python-telegram-bot schedule

Эти библиотеки позволят подключаться к Jira, отправлять сообщения в Telegram и запускать наш скрипт по расписанию.

Шаг 4: Написание скрипта

Создадим скрипт, который будет проверять дедлайны в Jira и отправлять уведомления в Telegram. Вот полный код:

from jira import JIRA
from telegram import Bot
from datetime import datetime, timedelta
import schedule
import time
# Конфигурация
jira_server = 'https://your-jira-instance.atlassian.net' # URL твоей Jira
jira_user = 'your-email@example.com' # Твой email для входа в Jira
jira_token = 'your-jira-api-token' # API токен, который ты создал ранее
telegram_token = 'your-telegram-bot-token' # Токен твоего бота в Telegram
chat_id = 'your-chat-id' # ID чата, куда бот будет отправлять сообщения
# Подключение к Jira
jira = JIRA(server=jira_server, basic_auth=(jira_user, jira_token))
# Подключение к Telegram
bot = Bot(token=telegram_token)
def check_deadlines():
  # Текущая дата и дата через 3 дня
  now = datetime.now()
  deadline_date = now + timedelta(days=3)
  # Получение задач, у которых дедлайн через 3 дня
  issues = jira.search_issues(f'duedate <= {deadline_date.strftime("%Y-%m-%d")} AND status != "Done"')
  for issue in issues:
    due_date = datetime.strptime(issue.fields.duedate, '%Y-%m-%d')
    if now <= due_date < deadline_date:
      # Отправка уведомления в Telegram
      message = f"Задача {issue.key}: {issue.fields.summary} имеет дедлайн {issue.fields.duedate}"
      bot.send_message(chat_id=chat_id, text=message)
# Запуск задачи по расписанию
schedule.every().day.at("09:00").do(check_deadlines)
# Бесконечный цикл для работы расписания
while True:
  schedule.run_pending()
  time.sleep(60)

Как работает этот скрипт?

  1. Скрипт подключается к твоему аккаунту Jira, используя токен и email.
  2. Подключается к Telegram-боту, используя его токен.
  3. Функция check_deadlines() проверяет задачи, у которых дедлайн наступает в ближайшие три дня.
  4. Если такие задачи есть, отправляет уведомление в Telegram с ключом задачи, кратким описанием и датой дедлайна.
  5. Настроено расписание, чтобы проверка запускалась каждый день в 9:00 утра.

Шаг 5: Настройка расписания

Ты можешь изменить расписание по своему усмотрению. Например, если хочешь, чтобы напоминания приходили несколько раз в день, можно добавить несколько запусков функции check_deadlines():

schedule.every().day.at("09:00").do(check_deadlines)
schedule.every().day.at("12:00").do(check_deadlines)
schedule.every().day.at("18:00").do(check_deadlines)

Шаг 6: Запуск скрипта

Сохрани скрипт и запусти его на своём сервере или компьютере. Пока скрипт будет работать, ты будешь получать уведомления о всех приближающихся дедлайнах.

Если хочешь, чтобы скрипт работал постоянно, настрой его запуск через cron или используй такие сервисы, как pm2 для его постоянной работы.

Заключение

Теперь ты всегда будешь в курсе всех приближающихся дедлайнов в своих проектах, и ни одна задача не останется без внимания. Создание такого бота — отличное решение для улучшения управления проектами и автоматизации рутины. Надеюсь, этот гайд был полезен, и теперь ты сможешь легко настроить своего Telegram-ассистента для Jira. Удачи!