1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
name: Issue Checkbox Checker
on:
issues:
types: [opened, edited]
permissions:
issues: write
jobs:
check-checkboxes:
runs-on: ubuntu-latest
steps:
- name: Check for unchecked prerequisites
uses: actions/github-script@v7
with:
script: |
const issue = context.payload.issue;
if (!issue) return;
const body = issue.body || '';
// Check if "I have not read carefully" checkbox is checked
const notReadPatterns = [
/- \[[xX]\] I have not read carefully/,
/- \[[xX]\] 我未仔细阅读/
];
const hasNotReadChecked = notReadPatterns.some(pattern => pattern.test(body));
if (hasNotReadChecked) {
const closeMessage = [
'## Issue Automatically Closed / Issue 已自动关闭',
'',
'**English:**',
'This issue has been automatically closed because you checked "I have not read carefully."',
'',
'Please:',
'1. Read the [README](https://github.com/' + context.repo.owner + '/' + context.repo.repo + '/blob/main/README.md) and documentation carefully',
'2. Search for existing issues',
'3. Fill out the issue template completely',
'4. Submit a new issue when ready',
'',
'**中文:**',
'此 Issue 已被自动关闭,因为您勾选了"我未仔细阅读"。',
'',
'请:',
'1. 仔细阅读 [README](https://github.com/' + context.repo.owner + '/' + context.repo.repo + '/blob/main/README.md) 和文档',
'2. 搜索现有 Issue',
'3. 完整填写 Issue 模板',
'4. 准备好后提交新的 Issue',
'',
'---',
'*This is an automated action. If you believe this was done in error, please contact the maintainers.*'
].join('\n');
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
body: closeMessage
});
await github.rest.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
state: 'closed',
state_reason: 'not_planned'
});
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
labels: ['invalid', 'auto-closed']
});
return;
}
// Count total checkboxes and checked boxes
const totalBoxes = (body.match(/- \[[ xX]\]/g) || []).length;
const checkedBoxes = (body.match(/- \[[xX]\]/g) || []).length;
// If no boxes are checked in prerequisites, add a reminder
if (totalBoxes > 0 && checkedBoxes === 0) {
const reminderMessage = [
'## Reminder / 提醒',
'',
'**English:**',
'Please check the prerequisite boxes in the issue template to confirm you have completed the required steps.',
'',
'**中文:**',
'请勾选 Issue 模板中的前置条件复选框,以确认您已完成必要步骤。'
].join('\n');
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
body: reminderMessage
});
}
|