diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index e401428..1d49e85 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -1,6 +1,9 @@ -name: Greetings - -on: [pull_request_target, issues] +name: Contribution Greetings +on: + pull_request_target: + branches: [ main ] + issues: + types: [ opened ] jobs: greeting: @@ -12,5 +15,51 @@ jobs: - uses: actions/first-interaction@v1 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - issue-message: "Thanks for youtissue!" + issue-message: "Thanks for your issue!" pr-message: "Thanks for the pull request!" + + - name: Check Contributor History + uses: actions/github-script@v7 + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + const { owner, repo } = context.repo; + const contributor = context.payload.sender.login; + + // Fetch total PR and Issue count for this contributor + const [prResponse, issueResponse] = await Promise.all([ + github.rest.search.issuesAndPullRequests({ + q: `is:pr repo:${owner}/${repo} author:${contributor}` + }), + github.rest.search.issuesAndPullRequests({ + q: `is:issue repo:${owner}/${repo} author:${contributor}` + }) + ]); + + const totalContributions = prResponse.data.total_count + issueResponse.data.total_count; + + let message = ''; + + if (totalContributions > 10) { + message = `Wow, you're still contributing @${contributor}!`; + } else if (totalContributions > 1) { + message = "Whoa! Thanks for another contribution!"; + } + + if (message) { + if (context.payload.pull_request) { + github.rest.issues.createComment({ + owner, + repo, + issue_number: context.issue.number, + body: message + }); + } else if (context.payload.issue) { + github.rest.issues.createComment({ + owner, + repo, + issue_number: context.issue.number, + body: message + }); + } + }