Update from Git Manager GUI
This commit is contained in:
67
commands/setlang.js
Normal file
67
commands/setlang.js
Normal file
@@ -0,0 +1,67 @@
|
||||
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] });
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user