name: Discord — New Issue Notification

on:
  issues:
    types: [opened]

jobs:
  notify:
    runs-on: ubuntu-latest
    steps:
      - name: Build Discord payload
        env:
          ISSUE_NUMBER: ${{ github.event.issue.number }}
          ISSUE_TITLE: ${{ github.event.issue.title }}
          ISSUE_URL: ${{ github.event.issue.html_url }}
          ISSUE_BODY: ${{ github.event.issue.body }}
          ISSUE_USER: ${{ github.event.issue.user.login }}
          ISSUE_AVATAR: ${{ github.event.issue.user.avatar_url }}
          ISSUE_CREATED_AT: ${{ github.event.issue.created_at }}
          REPO: ${{ github.repository }}
          LABELS_JSON: ${{ toJson(github.event.issue.labels) }}
        run: |
          python3 - <<'PYEOF'
          import json, os

          number     = os.environ["ISSUE_NUMBER"]
          title      = os.environ["ISSUE_TITLE"]
          url        = os.environ["ISSUE_URL"]
          body       = os.environ.get("ISSUE_BODY") or ""
          user       = os.environ["ISSUE_USER"]
          avatar     = os.environ["ISSUE_AVATAR"]
          repo       = os.environ["REPO"]
          created_at = os.environ["ISSUE_CREATED_AT"]

          short_body = body[:300] + ("..." if len(body) > 300 else "")
          if not short_body.strip():
              short_body = "*(no description)*"

          try:
              labels_raw = json.loads(os.environ.get("LABELS_JSON", "[]"))
              labels = ", ".join(f"`{l['name']}`" for l in labels_raw) if labels_raw else "*(none)*"
          except Exception:
              labels = "*(none)*"

          payload = {
              "content": "@everyone 📢 **New issue reported on Velxio!**",
              "embeds": [{
                  "title": f"🐛 Issue #{number}: {title}",
                  "url": url,
                  "description": short_body,
                  "color": 0xE74C3C,
                  "fields": [
                      {"name": "📦 Repository", "value": f"[`{repo}`](https://github.com/{repo})", "inline": True},
                      {"name": "🏷️ Labels",    "value": labels, "inline": True}
                  ],
                  "author": {
                      "name": user,
                      "url": f"https://github.com/{user}",
                      "icon_url": avatar
                  },
                  "footer": {"text": "Velxio · GitHub Issues"},
                  "timestamp": created_at
              }]
          }

          with open("/tmp/discord_payload.json", "w") as f:
              json.dump(payload, f)
          PYEOF

      - name: Send to Discord
        env:
          DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_ISSUES }}
        run: |
          HTTP_STATUS=$(curl -s -o /tmp/discord_response.txt -w "%{http_code}" \
            -X POST \
            -H "Content-Type: application/json" \
            --data @/tmp/discord_payload.json \
            "$DISCORD_WEBHOOK")

          echo "Discord response: $HTTP_STATUS"
          cat /tmp/discord_response.txt

          if [ "$HTTP_STATUS" -ne 204 ]; then
            echo "::error::Discord webhook failed with status $HTTP_STATUS"
            exit 1
          fi
