Files
AstrBot/.github/workflows/pr-checklist-check.yml
2026-03-16 02:11:15 +08:00

75 lines
3.0 KiB
YAML
Raw 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.
# This workflow checks whether the PR author checked the "I did NOT read" item
# in the PR checklist. If so, it posts a reminder comment and closes the PR.
name: PR Checklist Check
on:
pull_request_target:
types: [opened, edited, reopened, synchronize]
jobs:
check-checklist:
runs-on: ubuntu-latest
permissions:
pull-requests: write
issues: write
steps:
- name: Check if user checked "我没有认真阅读"
id: check
uses: actions/github-script@v7
with:
script: |
const body = context.payload.pull_request.body || '';
// 精确匹配完整的 checklist 项:- [x] 或 - [X] 后跟完整句子,忽略大小写和多余空格
const regex = /-+\s*\[\s*[xX]\s*\]\s*⚠️\s*我\*\*没有\*\*认真阅读以上内容,直接提交。/im;
const isBad = regex.test(body);
return isBad;
result-encoding: string
- name: Comment and close PR if checklist violated
if: steps.check.outputs.result == 'true'
uses: actions/github-script@v7
with:
script: |
const prNumber = context.payload.pull_request.number;
const author = context.payload.pull_request.user.login;
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
body: |
👋 @${author}
您的 PR 未通过检查清单校验 —— 检测到您勾选了「我**没有**认真阅读以上内容,直接提交」。
请按照以下规则重新提交 PR
1. 请仔细阅读 PR 模板中的所有说明。
2. 本次开发请**基于 \`dev\` 分支**进行,并将 PR 目标分支设置为**开发分支(\`dev\`**(除非极其紧急的情况才允许合并到主分支)。
3. 完成上述检查后,请重新发起 PR。
本 PR 已自动关闭,请按规范重新拉起。感谢您的贡献!🙏
---
Your PR failed the checklist validation — the item "I **did not** read the above carefully before submitting" was checked.
Please follow these rules and reopen a new PR:
1. Read all the instructions in the PR template carefully.
2. Make sure your development is **based on the \`dev\` branch**, and set the PR target branch to the **development branch (\`dev\`)** (only merge to main if extremely urgent).
3. Once you have reviewed everything, please open a new PR.
This PR has been automatically closed. Please reopen a correct one. Thank you for your contribution! 🙏
});
await github.rest.pulls.update({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: prNumber,
state: 'closed'
});