name: Issue Screening on: issues: types: [opened, edited] jobs: screen-issues: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 - name: Get details and check for keywords id: issue_check uses: actions/github-script@v5 with: script: | const issue = context.payload.issue; const issueNumber = issue.number; const title = (issue.title || "").toLowerCase(); const body = (issue.body || "").toLowerCase(); core.setOutput('number', issueNumber); const keywords = ["spam", "badword", "inappropriate", "suspicious", "unusual", "star", "stars", "buy", "buying"]; let containsKeyword = false; console.log(`Checking issue #${issueNumber} for whole word keywords...`); for (const keyword of keywords) { const regex = new RegExp(`\\b${keyword}\\b`); if (regex.test(title) || regex.test(body)) { containsKeyword = true; console.log(`Whole word keyword '${keyword}' found in issue #${issueNumber}.`); break; } } console.log(`Keyword check for issue #${issueNumber} completed. contains_keyword=${containsKeyword}`); core.setOutput('contains_keyword', containsKeyword); - name: Close and Modify Issue if it contains keywords if: steps.issue_check.outputs.contains_keyword == 'true' uses: actions/github-script@v5 with: github-token: ${{ secrets.ISSUE }} script: | const issueNumber = ${{ steps.issue_check.outputs.number }}; try { console.log(`Attempting to close, clear body, and rename title of issue #${issueNumber} due to keyword.`); await github.rest.issues.update({ owner: context.repo.owner, repo: context.repo.repo, issue_number: issueNumber, state: 'closed', title: "Cleared suspicious issues", body: "" }); console.log(`Successfully closed, cleared body, and renamed title of issue #${issueNumber}.`); } catch (error) { console.error(`Failed to update issue #${issueNumber}:`, error); throw error; }