ui updates and bot updates. new commands and command handler
This commit is contained in:
@@ -182,6 +182,50 @@ app.post('/api/servers/:guildId/welcome-leave-settings', (req, res) => {
|
||||
db[guildId].leaveMessage = newSettings.leave.message;
|
||||
db[guildId].leaveCustomMessage = newSettings.leave.customMessage;
|
||||
|
||||
writeDb(db);
|
||||
|
||||
res.json({ success: true });
|
||||
});
|
||||
|
||||
app.get('/api/servers/:guildId/roles', async (req, res) => {
|
||||
const { guildId } = req.params;
|
||||
const guild = bot.client.guilds.cache.get(guildId);
|
||||
if (!guild) {
|
||||
return res.json([]);
|
||||
}
|
||||
try {
|
||||
const rolesCollection = await guild.roles.fetch();
|
||||
// Exclude @everyone (role.id === guild.id), exclude managed roles, and only include roles below the bot's highest role
|
||||
const botHighest = guild.members.me.roles.highest.position;
|
||||
const manageable = rolesCollection
|
||||
.filter(role => role.id !== guild.id && !role.managed && role.position < botHighest)
|
||||
.sort((a, b) => b.position - a.position)
|
||||
.map(role => ({ id: role.id, name: role.name, color: role.hexColor }));
|
||||
res.json(manageable);
|
||||
} catch (error) {
|
||||
console.error('Error fetching roles:', error);
|
||||
res.status(500).json({ success: false, message: 'Internal Server Error' });
|
||||
}
|
||||
});
|
||||
|
||||
app.get('/api/servers/:guildId/autorole-settings', (req, res) => {
|
||||
const { guildId } = req.params;
|
||||
const db = readDb();
|
||||
const settings = db[guildId] || {};
|
||||
const autoroleSettings = settings.autorole || { enabled: false, roleId: '' };
|
||||
res.json(autoroleSettings);
|
||||
});
|
||||
|
||||
app.post('/api/servers/:guildId/autorole-settings', (req, res) => {
|
||||
const { guildId } = req.params;
|
||||
const { enabled, roleId } = req.body;
|
||||
const db = readDb();
|
||||
|
||||
if (!db[guildId]) {
|
||||
db[guildId] = {};
|
||||
}
|
||||
|
||||
db[guildId].autorole = { enabled, roleId };
|
||||
writeDb(db);
|
||||
res.json({ success: true });
|
||||
});
|
||||
@@ -190,6 +234,34 @@ app.get('/', (req, res) => {
|
||||
res.send('Hello from the backend!');
|
||||
});
|
||||
|
||||
// Return list of bot commands and per-guild enabled/disabled status
|
||||
app.get('/api/servers/:guildId/commands', (req, res) => {
|
||||
try {
|
||||
const { guildId } = req.params;
|
||||
const db = readDb();
|
||||
const guildSettings = db[guildId] || {};
|
||||
const toggles = guildSettings.commandToggles || {};
|
||||
const protectedCommands = ['manage-commands', 'help'];
|
||||
|
||||
const commands = Array.from(bot.client.commands.values()).map(cmd => {
|
||||
const isLocked = protectedCommands.includes(cmd.name);
|
||||
const isEnabled = isLocked ? true : (toggles[cmd.name] !== false && cmd.enabled !== false);
|
||||
return {
|
||||
name: cmd.name,
|
||||
description: cmd.description || 'No description.',
|
||||
enabled: isEnabled,
|
||||
locked: isLocked,
|
||||
hasSlashBuilder: !!cmd.builder,
|
||||
};
|
||||
});
|
||||
|
||||
res.json(commands);
|
||||
} catch (error) {
|
||||
console.error('Error returning commands:', error);
|
||||
res.status(500).json({ success: false, message: 'Internal Server Error' });
|
||||
}
|
||||
});
|
||||
|
||||
const bot = require('../discord-bot');
|
||||
|
||||
bot.login();
|
||||
|
||||
Reference in New Issue
Block a user