name: Close Discussion on PR Merge on: pull_request: types: [closed] jobs: closeDiscussion: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 - name: Check if PR was merged if: github.event.pull_request.merged == true run: echo "PR was merged" - name: Extract Discussion Number & Close If any Were Found env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} if: github.event.pull_request.merged == true id: extract-discussion run: | pr_body="${{ github.event.pull_request.body }}" discussion_ids=$(echo "$pr_body" | grep -oP '(?i)(resolve|fix|close)[s|d]? #\K[0-9]+') if [ -z "$discussion_ids" ]; then echo "No discussion IDs found." exit 0 fi for discussion_id in $discussion_ids; do echo "Closing discussion #$discussion_id" response=$(curl -s -o /dev/null -w "%{http_code}" -X PATCH -H "Authorization: token $GITHUB_TOKEN" \ -d '{"state": "closed"}' \ "https://api.github.com/repos/${{ github.repository }}/discussions/$discussion_id") if [ "$response" -ne 200 ]; then echo "Failed to close discussion #$discussion_id. HTTP status code: $response" exit 1 fi done shell: bash