diff --git a/.github/workflows/close-issue-on-pr-merge.yml b/.github/workflows/close-issue-on-pr-merge.yml
index 9e2d126..5ba88dc 100644
--- a/.github/workflows/close-issue-on-pr-merge.yml
+++ b/.github/workflows/close-issue-on-pr-merge.yml
@@ -91,6 +91,11 @@ jobs:
env:
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
+ # 经 env 注入,避免 Issue 标题等含引号/换行/$ 时被写入 run 脚本导致截断或语法错误
+ ISSUE_NUM: ${{ steps.pr.outputs.ISSUE_NUMBER }}
+ ISSUE_TITLE: ${{ steps.issue.outputs.title }}
+ ISSUE_URL: ${{ steps.issue.outputs.url }}
+ PR_URL: ${{ github.event.pull_request.html_url }}
run: |
# 与 docker-build 一致:未配置则跳过
if [ -z "$TELEGRAM_BOT_TOKEN" ] || [ -z "$TELEGRAM_CHAT_ID" ]; then
@@ -98,13 +103,12 @@ jobs:
exit 0
fi
- ISSUE_NUM="${{ steps.pr.outputs.ISSUE_NUMBER }}"
- ISSUE_TITLE="${{ steps.issue.outputs.title }}"
- ISSUE_URL="${{ steps.issue.outputs.url }}"
- PR_URL="${{ github.event.pull_request.html_url }}"
-
- # 与 docker-build 相同的 HTML 消息格式
- MESSAGE="✅ AI 修复的 Issue 已关闭"$'\n'$'\n'"🔢 Issue: #${ISSUE_NUM} ${ISSUE_TITLE}"$'\n'"📎 查看 Issue"$'\n'"🔗 查看 PR"
+ MESSAGE=$(jq -n -r \
+ --arg num "$ISSUE_NUM" \
+ --arg title "$ISSUE_TITLE" \
+ --arg iu "$ISSUE_URL" \
+ --arg pu "$PR_URL" \
+ '"✅ AI 修复的 Issue 已关闭\n\n🔢 Issue: #" + $num + " " + $title + "\n📎 查看 Issue\n🔗 查看 PR"')
curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
-H "Content-Type: application/json" \