Skip to content

[DISCORDSH] GitHub API ↔ Supabase Vault ↔ Discord Embed Integration #7849

@h0lybyte

Description

@h0lybyte

Overview

Investigate and design an integration pipeline: GitHub APISupabase Vault (secret storage) → Discord Bot Embeds for the discordsh bot.

The goal is to have the Discord bot pull data from GitHub (issues, PRs, task boards, branch status) using tokens stored securely in Supabase Vault, then render rich embed messages in Discord channels.

Architecture

GitHub API  ──→  discordsh bot  ──→  Discord Embeds
                     ↕
              Supabase Vault
            (GitHub PAT storage)

Components

  1. Supabase Vault — Store GitHub PATs and bot tokens securely via vault.create_secret(). The bot retrieves tokens at runtime instead of hardcoding them in env vars or config.

  2. GitHub API Integration — Fetch repo data (issues, PRs, branch protection status, commit activity, stagnation detection) using the stored PAT.

  3. Discord Embeds — Render structured, styled embed messages for notice boards, task boards, and status updates.

Example Embeds

Notice Board Embed

For surfacing blockers, stagnation, and cross-department coordination issues:

import discord
from datetime import datetime, timezone

notice_embed = discord.Embed(
    title="[Blocker] AI Pathfinding Mismatch",
    description="Doorway dimensions and corridor widths are preventing coherent navmesh generation. Requires 3D ↔ Programming coordination.",
    color=0xE67E22,
    timestamp=datetime.now(timezone.utc)
)

notice_embed.add_field(name="Ticket ID", value="`NB-0007`", inline=True)
notice_embed.add_field(name="Department", value="`3D Art / Programming`", inline=True)
notice_embed.add_field(name="Priority", value="`HIGH`", inline=True)

notice_embed.add_field(
    name="Reporter",
    value="Kron (`1234567890`)",
    inline=False
)

notice_embed.add_field(
    name="Task",
    value="[UE Test Asset Integration](https://github.com/KronStudios-Games/abovetheline)",
    inline=False
)

notice_embed.add_field(
    name="Stagnation",
    value="`3 days`\nLast activity: `2026-03-02 13:40 UTC`",
    inline=False
)

notice_embed.set_footer(text="Notice Board • 2026-03-05 19:42 UTC")

Task Board Embed

For phase-based project tracking with per-department task breakdowns:

import discord
from datetime import datetime, timezone

task_board_embed = discord.Embed(
    title="🧩 Task Board — Phase 0: Infrastructure Setup",
    description="Establish foundational infrastructure: GitHub enforcement, Discord automation, and UE base integration.",
    color=0x3498DB,
    timestamp=datetime.now(timezone.utc)
)

task_board_embed.add_field(
    name="Phase Success Criteria",
    value=(
        "• Bot deployed with core commands\n"
        "• Branch protections enforced\n"
        "• 3+ tasks merged successfully\n"
        "• Workflow discipline validated"
    ),
    inline=False
)

task_board_embed.add_field(
    name="Programming",
    value=(
        "• ***Git Branch Validation Script*** — **Owner** — ***Status: MERGED***\n"
        "• ***Bot – Task Board Automation*** — **Owner** — ***Status: OPEN***"
    ),
    inline=False
)

task_board_embed.add_field(
    name="3D Art",
    value="• ***Blockout Kit Prototype*** — **Owner** — ***Status: OPEN***",
    inline=False
)

task_board_embed.add_field(
    name="Narrative",
    value="• ***Settlement Interaction Framework*** — **Owner** — ***Status: OPEN***",
    inline=False
)

task_board_embed.add_field(
    name="Repository",
    value="https://github.com/KronStudios-Games/abovetheline",
    inline=False
)

task_board_embed.set_footer(text="Updated by Kron • 2026-03-05 19:42 UTC")

Tasks

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions