Комментарии
Библиотека позволяет получать, создавать, редактировать и удалять комментарии к задачам.
Обратите внимание
Как и все методы YaTracker, методы работы с комментариями являются асинхронными.
В примерах ниже вызовы показаны так, как будто мы уже находимся внутри корутины.
Официальная документация по комментариям: https://yandex.cloud/ru/docs/tracker/about-api
Получение списка комментариев
Чтобы получить список комментариев задачи, воспользуйтесь методом get_comments:
Метод поддерживает дополнительные параметры:
comments = await tracker.get_comments(
issue_id="WRITERS-1",
expand="attachments", # (1)
per_page=50, # (2)
id_=100500, # (3)
)
expand— какие дополнительные поля включить в ответ:attachments,htmlилиall.per_page— количество записей на странице.id_— курсор пагинации: вернуть комментарии, идущие после комментария с данным id (соответствует query-параметруid).
Добавление комментария
Чтобы прокомментировать задачу, воспользуйтесь методом post_comment:
Есть возможность добавить автора комментария в наблюдатели за задачей:
comment = await tracker.post_comment(
issue_id="WRITERS-1",
text="Отличная работа!",
is_add_to_followers=True,
)
Дополнительные параметры
Метод post_comment принимает **kwargs, поэтому вы можете передать любые другие
поля, поддерживаемые API Трекера при создании комментария (например, attachmentIds
или summonees — упомянутые пользователи получат уведомление). Имена в snake_case
будут автоматически преобразованы в camelCase, как принято в Трекере.
Редактирование комментария
Для изменения текста существующего комментария используйте edit_comment:
comment = await tracker.edit_comment(
issue_id="WRITERS-1",
comment_id=comment.id,
text="Отличная работа, но опечатка в третьем абзаце",
)
Метод также принимает необязательные параметры:
comment = await tracker.edit_comment(
issue_id="WRITERS-1",
comment_id=comment.id,
text="Обновлённый текст",
attachment_ids=["1234"], # (1)
summonees=["login1"], # (2)
markup_type="md", # (3)
)
attachment_ids— список идентификаторов вложений, которые нужно связать с комментарием.summonees— список логинов пользователей, которых нужно уведомить о комментарии.markup_type— тип разметки комментария, например"md"для Markdown.
Реакция на комментарий
Поставить реакцию на комментарий — так же, как в интерфейсе Трекера — можно методом
add_comment_reaction:
Сигнатура:
async def add_comment_reaction(
self,
issue_id: str,
comment_id: str | int,
reaction: str,
) -> Comment: ...
issue_id— ID или ключ задачи.comment_id— ID комментария: числовойidлибо строковыйlong_id.reaction— название реакции:"LIKE","DISLIKE","LAUGH","HOORAY","CONFUSED","HEART","ROCKET","EYES","FIRE","OK","FACEPALM"или"CHECK". Список принадлежит серверу, поэтому в библиотеке не типизирован — обычная строка.
Метод возвращает Comment с обновлёнными reactions_count и own_reactions (см. таблицу
полей ниже) — заново загружать комментарий не нужно.
Снять реакцию через API нельзя
Официальная документация описывает только запрос на добавление реакции — отдельного метода для её снятия нет. Отменить реакцию можно через интерфейс Трекера.
Источник: https://yandex.ru/support/tracker/ru/api/issues/add-reaction-to-comment
Удаление комментария
Метод возвращает True при успешном удалении.
Модель Comment
Каждый из методов выше (кроме delete_comment) возвращает объект Comment со следующими
полями:
| Поле | Тип | Описание |
|---|---|---|
url |
str |
Ссылка на комментарий (в API — поле self) |
id |
int |
Идентификатор комментария |
text |
str |
Текст комментария |
created_by |
User |
Автор комментария |
updated_by |
User \| None |
Последний редактор комментария |
created_at |
datetime |
Дата и время создания |
updated_at |
datetime \| None |
Дата и время последнего изменения |
version |
int |
Версия комментария |
long_id |
str \| None |
ID комментария в строковом формате |
reactions_count |
dict[str, int] \| None |
Количество реакций каждого вида; ключ — название реакции в нижнем регистре |
own_reactions |
list[str] \| None |
Реакции текущего пользователя на комментарий, в нижнем регистре |
type |
str \| None |
Тип комментария: standard (через интерфейс), incoming/outcoming (из входящего/исходящего письма) |
transport |
str \| None |
Способ добавления: internal (через интерфейс) или email |
long_id, reactions_count, own_reactions, type и transport необязательны: они
заполняются не во всех ответах API, поэтому в модели помечены как | None.