@@ -34,6 +34,28 @@ async function remindReviewers() {
34
34
for ( const pr of pulls . data ) {
35
35
console . log ( `Processing PR #${ pr . number } : ${ pr . title } ` ) ;
36
36
37
+ // Skip PRs that already have the 'reminded' label
38
+ const labels = await octokit . rest . issues . listLabelsOnIssue ( {
39
+ owner,
40
+ repo,
41
+ issue_number : pr . number ,
42
+ } ) ;
43
+
44
+ if ( labels . data . some ( ( label ) => label . name === "reminded" ) ) {
45
+ console . log ( `PR #${ pr . number } already has 'reminded' label. Skipping.` ) ;
46
+ continue ;
47
+ }
48
+
49
+ // Check PR age
50
+ const prCreatedAt = new Date ( pr . created_at ) ;
51
+ const now = new Date ( ) ;
52
+ const hoursSinceOpened = Math . abs ( now - prCreatedAt ) / 36e5 ;
53
+
54
+ if ( hoursSinceOpened < 48 ) {
55
+ console . log ( `PR #${ pr . number } is ${ hoursSinceOpened . toFixed ( 1 ) } hours old. Skipping reminder.` ) ;
56
+ continue ;
57
+ }
58
+
37
59
// Fetch pending reviewers
38
60
const reviewRequests = await octokit . rest . pulls . listRequestedReviewers ( {
39
61
owner,
@@ -58,15 +80,26 @@ async function remindReviewers() {
58
80
) } \n\nPS: ${ alwaysTagUsers . map ( user => `@${ user } ` ) . join ( ", " ) } `;
59
81
60
82
if ( ! dryRun ) {
83
+ // Add the comment
61
84
await octokit . rest . issues . createComment ( {
62
85
owner,
63
86
repo,
64
87
issue_number : pr . number ,
65
88
body : commentBody ,
66
89
} ) ;
67
90
console . log ( `Added comment to PR #${ pr . number } : "${ commentBody } "` ) ;
91
+
92
+ // Add the 'reminded' label
93
+ await octokit . rest . issues . addLabels ( {
94
+ owner,
95
+ repo,
96
+ issue_number : pr . number ,
97
+ labels : [ "reminded" ] ,
98
+ } ) ;
99
+ console . log ( `Added 'reminded' label to PR #${ pr . number } ` ) ;
68
100
} else {
69
101
console . log ( `[DRY RUN] Would add comment to PR #${ pr . number } : "${ commentBody } "` ) ;
102
+ console . log ( `[DRY RUN] Would add 'reminded' label to PR #${ pr . number } ` ) ;
70
103
}
71
104
} else {
72
105
console . log ( `No pending reviewers for PR #${ pr . number } . Skipping comment.` ) ;
0 commit comments