forked from syntaxbullet/AuroraBot-discord
refactor: consolidate config loading
This commit is contained in:
@@ -1,8 +1,7 @@
|
|||||||
import { createCommand } from "@shared/lib/utils";
|
import { createCommand } from "@shared/lib/utils";
|
||||||
import { SlashCommandBuilder, PermissionFlagsBits, MessageFlags } from "discord.js";
|
import { SlashCommandBuilder, PermissionFlagsBits, MessageFlags } from "discord.js";
|
||||||
import { createBaseEmbed } from "@lib/embeds";
|
import { createBaseEmbed } from "@lib/embeds";
|
||||||
import { configManager } from "@shared/lib/configManager";
|
import { config, reloadConfig, toggleCommand } from "@shared/lib/config";
|
||||||
import { config, reloadConfig } from "@shared/lib/config";
|
|
||||||
import { AuroraClient } from "@/lib/BotClient";
|
import { AuroraClient } from "@/lib/BotClient";
|
||||||
|
|
||||||
export const features = createCommand({
|
export const features = createCommand({
|
||||||
@@ -79,11 +78,11 @@ export const features = createCommand({
|
|||||||
|
|
||||||
await interaction.deferReply({ flags: MessageFlags.Ephemeral });
|
await interaction.deferReply({ flags: MessageFlags.Ephemeral });
|
||||||
|
|
||||||
configManager.toggleCommand(commandName, enabled);
|
toggleCommand(commandName, enabled);
|
||||||
|
|
||||||
await interaction.editReply({ content: `✅ Command **${commandName}** has been ${enabled ? "enabled" : "disabled"}. Reloading configuration...` });
|
await interaction.editReply({ content: `✅ Command **${commandName}** has been ${enabled ? "enabled" : "disabled"}. Reloading configuration...` });
|
||||||
|
|
||||||
// Reload config from disk (which was updated by configManager)
|
// Reload config from disk (which was updated by toggleCommand)
|
||||||
reloadConfig();
|
reloadConfig();
|
||||||
|
|
||||||
await AuroraClient.loadCommands(true);
|
await AuroraClient.loadCommands(true);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { readFileSync, existsSync, writeFileSync } from 'node:fs';
|
|||||||
import { join } from 'node:path';
|
import { join } from 'node:path';
|
||||||
import { z } from 'zod';
|
import { z } from 'zod';
|
||||||
|
|
||||||
const configPath = join(import.meta.dir, '..', '..', 'config', 'config.json');
|
const configPath = join(import.meta.dir, '..', 'config', 'config.json');
|
||||||
|
|
||||||
export interface GameConfigType {
|
export interface GameConfigType {
|
||||||
leveling: {
|
leveling: {
|
||||||
@@ -202,3 +202,14 @@ export function saveConfig(newConfig: unknown) {
|
|||||||
writeFileSync(configPath, jsonString, 'utf-8');
|
writeFileSync(configPath, jsonString, 'utf-8');
|
||||||
reloadConfig();
|
reloadConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function toggleCommand(commandName: string, enabled: boolean) {
|
||||||
|
const newConfig = {
|
||||||
|
...config,
|
||||||
|
commands: {
|
||||||
|
...config.commands,
|
||||||
|
[commandName]: enabled
|
||||||
|
}
|
||||||
|
};
|
||||||
|
saveConfig(newConfig);
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
import { readFileSync, writeFileSync } from 'fs';
|
|
||||||
import { join } from 'path';
|
|
||||||
|
|
||||||
const configPath = join(process.cwd(), 'config', 'config.json');
|
|
||||||
|
|
||||||
export const configManager = {
|
|
||||||
toggleCommand: (commandName: string, enabled: boolean) => {
|
|
||||||
const raw = readFileSync(configPath, 'utf-8');
|
|
||||||
const data = JSON.parse(raw);
|
|
||||||
|
|
||||||
if (!data.commands) {
|
|
||||||
data.commands = {};
|
|
||||||
}
|
|
||||||
|
|
||||||
data.commands[commandName] = enabled;
|
|
||||||
|
|
||||||
writeFileSync(configPath, JSON.stringify(data, null, 4));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
Reference in New Issue
Block a user