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' });