name: Auto-close untriaged issues on: issues: types: [opened, reopened] permissions: issues: write jobs: auto-close: runs-on: ubuntu-latest steps: - name: Close issues from non-allowed authors uses: actions/github-script@v9 with: script: | // Users allowed to open issues directly. All other authors will have // their issues auto-closed. Add GitHub usernames (lowercase) here to // grant additional contributors permission to open issues. const allowedAuthors = [ 'mdecimus', ]; const issue = context.payload.issue; const author = (issue.user && issue.user.login) || ''; if (allowedAuthors.includes(author.toLowerCase())) { core.info(`Issue #${issue.number} opened by allowed author '${author}'. Skipping.`); return; } const comment = [ `Hi @${author}, thanks for taking the time to file this report.`, ``, `This issue is being **automatically closed** because all bug reports must first be triaged at our support portal: **[support.stalw.art](https://support.stalw.art)**. Please re-post this report there so that a maintainer can review it; once confirmed as a bug, an Issue will be created on your behalf.`, ``, `You can sign in to support.stalw.art with your existing GitHub account, so no separate registration is required.`, ``, `Thank you for understanding.`, ].join('\n'); await github.rest.issues.createComment({ owner: context.repo.owner, repo: context.repo.repo, issue_number: issue.number, body: comment, }); await github.rest.issues.update({ owner: context.repo.owner, repo: context.repo.repo, issue_number: issue.number, state: 'closed', state_reason: 'not_planned', }); try { await github.rest.issues.lock({ owner: context.repo.owner, repo: context.repo.repo, issue_number: issue.number, lock_reason: 'off-topic', }); } catch (err) { core.warning(`Could not lock issue #${issue.number}: ${err.message}`); }