diff --git a/src/web/routes/api.ts b/src/web/routes/api.ts index a0d9624..01f6fdb 100644 --- a/src/web/routes/api.ts +++ b/src/web/routes/api.ts @@ -106,6 +106,35 @@ router.get('/guild/logs', requireAuth, (req, res) => { res.json({ logs }); }); +router.get('/guild/resources', requireAuth, async (req, res) => { + const guildId = typeof req.query.guildId === 'string' ? req.query.guildId : undefined; + if (!guildId) return res.status(400).json({ error: 'guildId required' }); + const guild = context.client?.guilds.cache.get(guildId); + if (!guild) return res.status(404).json({ error: 'guild not found' }); + const channels = guild.channels.cache + .filter((c) => c.isTextBased() || c.isVoiceBased()) + .map((c) => ({ + id: c.id, + name: c.name, + type: c.isVoiceBased() ? 'voice' : 'text', + parentId: c.parentId + })) + .sort((a, b) => a.name.localeCompare(b.name)); + const roles = guild.roles.cache + .filter((r) => r.name !== '@everyone') + .map((r) => ({ + id: r.id, + name: r.name, + color: r.hexColor + })) + .sort((a, b) => b.rawPosition - a.rawPosition); + const categories = guild.channels.cache + .filter((c) => c.type === 4) + .map((c) => ({ id: c.id, name: c.name })) + .sort((a, b) => a.name.localeCompare(b.name)); + res.json({ channels, roles, categories }); +}); + router.get('/overview', requireAuth, async (req, res) => { const guildId = typeof req.query.guildId === 'string' ? req.query.guildId : undefined; try { diff --git a/src/web/routes/dashboard.ts b/src/web/routes/dashboard.ts index c8d8995..c59b599 100644 --- a/src/web/routes/dashboard.ts +++ b/src/web/routes/dashboard.ts @@ -105,6 +105,9 @@ router.get('/', (req, res) => { + + +