forked from syntaxbullet/AuroraBot-discord
feat: implement administrative control panel with real-time bot actions
This commit is contained in:
53
shared/modules/admin/action.service.ts
Normal file
53
shared/modules/admin/action.service.ts
Normal file
@@ -0,0 +1,53 @@
|
||||
import { systemEvents, EVENTS } from "@shared/lib/events";
|
||||
import { dashboardService } from "@shared/modules/dashboard/dashboard.service";
|
||||
|
||||
/**
|
||||
* Service to handle administrative actions triggered from the dashboard.
|
||||
* These actions are broadcasted to the bot via the system event bus.
|
||||
*/
|
||||
export const actionService = {
|
||||
/**
|
||||
* Triggers a reload of all bot commands.
|
||||
*/
|
||||
reloadCommands: async () => {
|
||||
systemEvents.emit(EVENTS.ACTIONS.RELOAD_COMMANDS);
|
||||
|
||||
await dashboardService.recordEvent({
|
||||
type: "info",
|
||||
message: "Admin: Triggered command reload",
|
||||
icon: "♻️"
|
||||
});
|
||||
|
||||
return { success: true, message: "Command reload triggered" };
|
||||
},
|
||||
|
||||
/**
|
||||
* Triggers a clearance of internal bot caches.
|
||||
*/
|
||||
clearCache: async () => {
|
||||
systemEvents.emit(EVENTS.ACTIONS.CLEAR_CACHE);
|
||||
|
||||
await dashboardService.recordEvent({
|
||||
type: "info",
|
||||
message: "Admin: Triggered cache clearance",
|
||||
icon: "🧹"
|
||||
});
|
||||
|
||||
return { success: true, message: "Cache clearance triggered" };
|
||||
},
|
||||
|
||||
/**
|
||||
* Toggles maintenance mode for the bot.
|
||||
*/
|
||||
toggleMaintenanceMode: async (enabled: boolean, reason?: string) => {
|
||||
systemEvents.emit(EVENTS.ACTIONS.MAINTENANCE_MODE, { enabled, reason });
|
||||
|
||||
await dashboardService.recordEvent({
|
||||
type: enabled ? "warn" : "info",
|
||||
message: `Admin: Maintenance mode ${enabled ? "ENABLED" : "DISABLED"}${reason ? ` (${reason})` : ""}`,
|
||||
icon: "🛠️"
|
||||
});
|
||||
|
||||
return { success: true, enabled, message: `Maintenance mode ${enabled ? "enabled" : "disabled"}` };
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user