Files
SpigotWatch/commands/setlang.js
2026-02-25 18:51:08 +01:00

67 lines
2.0 KiB
JavaScript

import { EmbedBuilder, PermissionsBitField, SlashCommandBuilder } from "discord.js";
import fs from "fs/promises";
import { t } from "../util/i18n.js";
export default {
name: "setlang",
description: "Stellt die Sprache des Bots für diesen Server ein (DE/EN)",
aliases: ["language", "lang"],
guild: ["all"],
nsfw: false,
user_permissions: [PermissionsBitField.Flags.Administrator],
bot_permissions: [],
args_required: 1,
args_usage: "[de|en] Beispiel: vn!setlang en",
cooldown: 5,
data: new SlashCommandBuilder()
.setName("setlang")
.setDescription("Set the bot language for this server (DE/EN)")
.addStringOption((opt) =>
opt
.setName("sprache")
.setDescription("Sprache / Language")
.setRequired(true)
.addChoices(
{ name: "🇩🇪 Deutsch", value: "de" },
{ name: "🇬🇧 English", value: "en" }
)
),
async execute(client, ctx, args) {
const input = ctx.isSlash
? ctx.interaction.options.getString("sprache")
: args[0]?.toLowerCase();
if (!["de", "en"].includes(input)) {
return ctx.reply("Ungültige Sprache. Nutze `de` oder `en`.");
}
const guildID = ctx.guild.id;
const filePath = `./serverdata/${guildID}.json`;
let saveData = { watchedResources: [] };
try {
const raw = await fs.readFile(filePath, "utf8");
saveData = JSON.parse(raw);
} catch { /* Datei noch nicht vorhanden */ }
saveData.lang = input;
try {
await fs.mkdir("./serverdata", { recursive: true });
await fs.writeFile(filePath, JSON.stringify(saveData, null, 2));
} catch (e) {
client.logger.error(e);
return ctx.reply(t(input, "error.saveFailed"));
}
const flag = input === "de" ? "🇩🇪" : "🇬🇧";
const embed = new EmbedBuilder()
.setColor(ctx.guild.members.me.displayHexColor)
.setTitle(t(input, "setlang.title"))
.setDescription(`${flag} ${t(input, "setlang.success")}`);
return ctx.reply({ embeds: [embed] });
},
};