groldsf_obsidian_check_plugin/.github/workflows/tg_notify.yml
2025-05-12 12:39:32 +03:00

67 lines
3.9 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: Notify Telegram on Issues and Pull Requests
on:
issues:
types: [opened, edited, reopened]
pull_request:
types: [opened, edited, reopened, review_requested, ready_for_review, synchronize]
issue_comment:
types: [created]
pull_request_review:
types: [submitted]
jobs:
notify_telegram: # Переименовал job для ясности
name: Notify Telegram
runs-on: ubuntu-latest
steps:
- name: Prepare notification message
id: prepare_message # Добавляем ID шагу, чтобы ссылаться на его output
run: |
TITLE="${{ github.event.issue.title || github.event.pull_request.title || 'Комментарий' }}"
BODY="${{ github.event.issue.body || github.event.comment.body || github.event.review.body || '' }}" # Добавил github.event.review.body для pull_request_review
URL="${{ github.event.issue.html_url || github.event.pull_request.html_url || github.event.comment.html_url || github.event.review.html_url }}"
# Формируем полное сообщение
FULL_MESSAGE="Репозиторий: ${{ github.repository }}
Тип: ${{ github.event_name }}
Действие: ${{ github.event.action }}
Заголовок: ${TITLE}
${BODY}
Подробнее: ${URL}"
# Формируем короткое сообщение
SHORT_MESSAGE="Репозиторий: ${{ github.repository }}
Тип: ${{ github.event_name }}
Действие: ${{ github.event.action }}
Заголовок: ${TITLE}
Произошло обновление. Подробнее: ${URL}"
# Проверяем длину полного сообщения (приблизительно, т.к. точный лимит зависит от кодировки и спецсимволов, но 3800 должно быть безопасно)
# Лимит Telegram 4096. Оставляем запас.
MAX_LENGTH=3800
if [ ${#FULL_MESSAGE} -gt $MAX_LENGTH ]; then
echo "Сообщение слишком длинное, отправляем короткую версию."
# Используем echo -e для корректной обработки многострочности и сохраняем в переменную окружения для следующего шага
echo "TELEGRAM_MESSAGE<<EOF" >> $GITHUB_ENV
echo -e "${SHORT_MESSAGE}" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
else
echo "TELEGRAM_MESSAGE<<EOF" >> $GITHUB_ENV
echo -e "${FULL_MESSAGE}" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
fi
# Важно: нужно корректно обрабатывать пустые значения, если некоторых полей нет в событии
env:
TITLE: ${{ github.event.issue.title || github.event.pull_request.title || 'Комментарий к событию' }}
BODY: ${{ github.event.issue.body || github.event.comment.body || github.event.review.body || '' }} # Если комментарий пуст или это не событие комментария
URL: ${{ github.event.issue.html_url || github.event.pull_request.html_url || github.event.comment.html_url || github.event.review.html_url }}
- name: Send Telegram Message
uses: appleboy/telegram-action@master
with:
to: ${{ secrets.TELEGRAM_CHAT_ID }}
token: ${{ secrets.TELEGRAM_BOT_TOKEN }}
message: ${{ env.TELEGRAM_MESSAGE }} # Используем подготовленное сообщение
format: markdown # Или html, если хотите использовать разметку в сообщениях