Телеграм бот на Python, для напоминаний о реквестах на BitBucket

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Бот - для работы с репозиторием проекта в BitBucket.

Приветствую любителей ботов :-) Позвольте представить вашему вниманию бота для работы с репозиторием проекта в BitBucket.

Краткое описание моих скромных трудов.

Схема:

Пример сообщений в телеграм:

Сразу оговорюсь, я являюсь автоматизатором на Java. Начинал изучение с Python, поэтому и бота написал на нем, так как моя работа происходит на Java, мне захотелось вспомнить Python), поддерживать и углублять свои знания этого языка.

И вот мне пришла в голову идея создания бота. Который к слову на проекте используется в нашем командном телеграмм чате, состоящим из 9 человек. Я обдумал основные задачи для которых он был бы необходим, их три (по результатм опроса, позже, выяснилось этого достаточно, но можно расширять функционал по своему усмотрению и необходимости):

  1. Информировать о новых пулл-реквестах

  2. Напоминать о текущих, что бы их проверили и поставили апрув (подтверждение на мерж)

  3. Информировать о комментах в реквесте, если их более 1

Задачи исходили в первую очередь из потребностей проекта. У нас бывало по долгу не проверялись реквесты. Их либо забывали проверять, либо не знали что реквест создан (у нас есть информирование по реквестам через корпоративную почту, но там бывают задержки, да и не всегда она читается).

Я понимаю, бота можно расширить до того, что он будет информировать о любых изменениях реквеста (аппрув, изменение названия, событие мержа реквеста), но тогда наш чат превратиться в чат бесконечного спама от бота, будет неудобно переписываться по рабочим вопросам между собой, поэтому я ограничился задачами, описанными, выше. Этого как оказалось вполне хватает, реквесты стали более быстро проверяться, комментироваться и отслеживаться, что не может не радовать).

Да бот оказался весьма кстати и как мне кажется полезен.

Технологии и библиотеки

Прежде чем приступить к реализации бота, я разумееется поискал есть ли подобные боты, они были, но мне удалось найти только на GO и на Java примеры реализаций. Был, насколько я припоминаю, и на Python, но мне не подходила его реализация. Вообщем сделаю свой, решил я.

Я хотел сделать его максимально понятным и удобным в использовании. Разумеется так как он работает с конфидециальным корпоративным ресурсом я не могу деплоить его в облаках или на сторонних серверах, он работает у меня локально, меня и всех это устраивает. Будьте осторожны, если захотите использовать этого бота, с вашими конфидециальными данными (конечно если таковые есть), используйте бота в защищенных корпоративных сетях либо локально.

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

Работу с API BitBucket была использована библиотека Atlassian.

Пример команды, можно подробнее посмотреть на GitHub:

from aiogram import Bot, Dispatcher, executor, types
from aiogram.types import ParseMode, Message
from aiogram.utils.markdown import text, bold, code


@dp.message_handler(commands=['start', 'help'])
async def start_bot(message: types.Message):
    """
    Стартовая команда, для приветствия и инфо о боте
    """
    try:
        msg = text(code("Привет, это бот BitBucket\n") +
                    code("Для проекта:  ") + bold(project.upper() + "\n") +
                    code("Репозитория:  ") + bold(repository + "\n") +
                    code("Нажмите, просмотреть:   ") + bold("/requests") + "\n" +
                    code("Посмотреть курсы валют:  ") + bold("/currency"))

        await bot.send_message(message.from_user.id, msg, parse_mode=ParseMode.MARKDOWN, reply_markup=kb_client)
    except:
        await message.reply("ВАЖНО: Вам нужно добавиться к боту, все уведомления идут в ЛС!!!")


@dp.message_handler(commands=['requests'])
async def send_open_pull_requests(message: Message):
    """
    Команда для вывода Pull-requests в личку пользователю

    :param message: класс Message от которого можно использовать
                    разные методы отправки сообщений
    """
    size = bitBacketUtils.get_size_pull_requests()
    try:
        msg = text("						
Источник: https://habr.com/ru/post/710036/


Интересные статьи

Интересные статьи

Hola, Amigos!Ресерчил интернет в поисках классных телеграм-каналов по Flutter и понял, что подробных и понятных дайджестов мало. Ну, справедливости ради, и самих каналов о Flutter не так уж и много. П...
Можете представить Новый год без мандаринов, елки и подарков? А что насчет фильма «Один дома»? Каждый год мы наблюдаем за судьбой мальчика, который забаррикадировался дома и обороняет его от двух...
Нередко при работе с Bitrix24 REST API возникает необходимость быстро получить содержимое определенных полей всех элементов какого-то списка (например, лидов). Традиционн...
Предыстория Когда-то у меня возникла необходимость проверять наличие неотправленных сообщений в «1С-Битрикс: Управление сайтом» (далее Битрикс) и получать уведомления об этом. Пробле...
В этой статье мы рассмотрим, как система управления 1С-Битрикс справляется с большими нагрузками. Данный вопрос особенно актуален сегодня, когда электронная торговля начинает конкурировать по обороту ...