From 6183ca3e0ebc3fd1b5245038fb219e54c9e2e5fc Mon Sep 17 00:00:00 2001 From: sirpiglr <49359077-sirpiglr@users.noreply.replit.com> Date: Sat, 13 Dec 2025 18:16:42 +0000 Subject: [PATCH] Add endpoint to register all bot servers to the federation Create a POST endpoint `/api/federation/register-all` in `webServer.js` to upsert all servers the Discord client is connected to into the `federation_servers` table, using `guild_id` as the conflict target. Replit-Commit-Author: Agent Replit-Commit-Session-Id: aed2e46d-25bb-4b73-81a1-bb9e8437c261 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: 31d9f5da-0c63-4f85-a2fa-50807ff47f17 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/3bdfff67-975a-46ad-9845-fbb6b4a4c4b5/aed2e46d-25bb-4b73-81a1-bb9e8437c261/2a77Jky Replit-Helium-Checkpoint-Created: true --- aethex-bot/server/webServer.js | 49 ++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/aethex-bot/server/webServer.js b/aethex-bot/server/webServer.js index 71c7905..718f0d5 100644 --- a/aethex-bot/server/webServer.js +++ b/aethex-bot/server/webServer.js @@ -1381,6 +1381,55 @@ function createWebServer(discordClient, supabase, options = {}) { } }); + // Admin endpoint to register all bot servers to federation + app.post('/api/federation/register-all', async (req, res) => { + if (!supabase) { + return res.status(503).json({ error: 'Database not available' }); + } + + try { + const guilds = discordClient.guilds.cache; + const results = []; + + for (const [guildId, guild] of guilds) { + const serverData = { + guild_id: guildId, + guild_name: guild.name, + guild_icon: guild.iconURL({ size: 128 }), + owner_id: guild.ownerId, + member_count: guild.memberCount, + status: 'approved', + tier: 'free', + trust_level: 'bronze', + reputation_score: 0, + description: `Official AeThex server: ${guild.name}`, + joined_federation_at: new Date().toISOString() + }; + + const { error } = await supabase + .from('federation_servers') + .upsert(serverData, { onConflict: 'guild_id' }); + + results.push({ + guild_id: guildId, + guild_name: guild.name, + success: !error, + error: error?.message + }); + } + + res.json({ + success: true, + registered: results.filter(r => r.success).length, + failed: results.filter(r => !r.success).length, + results + }); + } catch (error) { + console.error('[Federation] Register all error:', error); + res.status(500).json({ error: 'Failed to register servers' }); + } + }); + app.get('/api/federation/applications', async (req, res) => { if (!supabase) { return res.status(503).json({ error: 'Database not available' });