Update OpenClaw #32
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Auto-close spam PRs | |
| on: | |
| pull_request_target: | |
| types: [opened] | |
| jobs: | |
| check-spam: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| pull-requests: write | |
| steps: | |
| - uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const pr = context.payload.pull_request; | |
| const author = pr.user.login; | |
| // Skip PRs from repo owner | |
| if (author === 'arjunkomath') { | |
| console.log('PR from repo owner, skipping.'); | |
| return; | |
| } | |
| const title = pr.title || ''; | |
| const body = (pr.body || '').trim(); | |
| const headBranch = pr.head.ref; | |
| // Strip template boilerplate to measure actual content | |
| const templatePatterns = [ | |
| /<!--.*?-->/gs, | |
| /^## .+$/gm, | |
| /^- \[ \] .+$/gm, | |
| /^Fixes #\s*$/gm, | |
| ]; | |
| let strippedBody = body; | |
| for (const pattern of templatePatterns) { | |
| strippedBody = strippedBody.replace(pattern, ''); | |
| } | |
| strippedBody = strippedBody.trim(); | |
| let reason = ''; | |
| // Check: empty or near-empty body | |
| if (strippedBody.length < 50) { | |
| reason = 'PR description is empty or too short'; | |
| } | |
| // Check: title too short | |
| if (!reason && title.length < 20) { | |
| reason = 'PR title is too short'; | |
| } | |
| if (!reason) { | |
| console.log('PR looks legitimate, skipping.'); | |
| return; | |
| } | |
| console.log(`Closing PR #${pr.number}: ${reason}`); | |
| // Comment and close | |
| await github.rest.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: pr.number, | |
| body: `This PR was automatically closed. Reason: **${reason}**.` | |
| }); | |
| await github.rest.pulls.update({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| pull_number: pr.number, | |
| state: 'closed', | |
| }); |