name: Congratsbot on: push: branches: [main] jobs: check-author: if: ${{ github.repository_owner == 'zed-industries' }} runs-on: namespace-profile-2x4-ubuntu-2404 outputs: should_congratulate: ${{ steps.check.outputs.should_congratulate }} steps: - name: Get PR info and check if author is external id: check uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7 with: github-token: ${{ secrets.CONGRATSBOT_GITHUB_TOKEN }} script: | const { data: prs } = await github.rest.repos.listPullRequestsAssociatedWithCommit({ owner: context.repo.owner, repo: context.repo.repo, commit_sha: context.sha }); if (prs.length === 0) { core.setOutput('should_congratulate', 'false'); return; } const mergedPR = prs.find(pr => pr.merged_at !== null) || prs[0]; if (mergedPR.user.type === "Bot") { // They are a good bot, but not good enough to be congratulated core.setOutput('should_congratulate', 'false'); return; } const prAuthor = mergedPR.user.login; try { await github.rest.teams.getMembershipForUserInOrg({ org: 'zed-industries', team_slug: 'staff', username: prAuthor }); core.setOutput('should_congratulate', 'false'); } catch (error) { if (error.status === 404) { core.setOutput('should_congratulate', 'true'); } else { console.error(`Error checking team membership: ${error.message}`); core.setOutput('should_congratulate', 'false'); } } congrats: needs: check-author if: needs.check-author.outputs.should_congratulate == 'true' uses: withastro/automation/.github/workflows/congratsbot.yml@a5bd0c5748c4d56e687cdd558064f9ee8adfb1f2 # main with: EMOJIS: 🎉,🎊,🧑‍🚀,🥳,🙌,🚀,🦀,🔥,🚢 secrets: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_CONGRATS }}