mirror of
https://github.com/groldsf/obsidian_check_plugin.git
synced 2026-07-22 12:00:31 +00:00
67 lines
3.9 KiB
YAML
67 lines
3.9 KiB
YAML
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, если хотите использовать разметку в сообщениях
|