diff --git a/.github/workflows/issue-checkbox-checker.yml b/.github/workflows/issue-checkbox-checker.yml index 22030ec84b..2d7dcc389c 100644 --- a/.github/workflows/issue-checkbox-checker.yml +++ b/.github/workflows/issue-checkbox-checker.yml @@ -11,6 +11,56 @@ jobs: issues: write steps: + - name: Check for duplicate issues in last hour + id: duplicate-check + uses: actions/github-script@v7 + with: + script: | + const oneHourAgo = new Date(Date.now() - 60 * 60 * 1000); + const currentIssueCreatedAt = new Date(context.payload.issue.created_at); + const issueAuthor = context.payload.issue.user.login; + + // 重新获取该用户最近的 issues + const { data: userIssues } = await github.rest.issues.listForRepo({ + owner: context.repo.owner, + repo: context.repo.repo, + creator: issueAuthor, + state: 'all', + since: oneHourAgo.toISOString(), + per_page: 30 + }); + + // 过滤出1小时内创建的其他 issues(排除当前 issue) + const recentIssues = userIssues.filter(issue => { + const issueCreatedAt = new Date(issue.created_at); + return issue.number !== context.issue.number && + issueCreatedAt >= oneHourAgo && + issueCreatedAt < currentIssueCreatedAt; + }); + + // 给当前 issue 添加标签 + await github.rest.issues.addLabels({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + labels: ['rapid-submission'] + }); + + // 给1小时内的其他 issues 也添加标签 + for (const issue of recentIssues) { + try { + await github.rest.issues.addLabels({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: issue.number, + labels: ['rapid-submission'] + }); + console.log(`Added rapid-submission label to issue #${issue.number}`); + } catch (error) { + console.log(`Failed to add label to issue #${issue.number}: ${error.message}`); + } + } + - name: Check checkbox status id: unread-checkbox-check uses: actions/github-script@v7 @@ -39,6 +89,14 @@ jobs: uses: actions/github-script@v7 with: script: | + await github.rest.issues.update({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + state: 'closed', + state_reason: 'not_planned' + }); + await github.rest.issues.addLabels({ owner: context.repo.owner, repo: context.repo.repo, @@ -46,6 +104,13 @@ jobs: labels: ['low-quality-report'] }); + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + body: '因为未阅读模板提示并正确提交,触发了自动关闭规则\n\nBecause the template prompt was not read and submitted correctly, the automatic closing rule was triggered' + }); + - name: Fold checkboxes if: steps.unread-checkbox-check.outputs.result == 'false' uses: actions/github-script@v7