Update from Git Manager GUI

This commit is contained in:
2026-02-25 18:51:08 +01:00
parent de4341a0a9
commit 1567151fce
21 changed files with 2023 additions and 0 deletions

83
commands/setinterval.js Normal file
View File

@@ -0,0 +1,83 @@
import { EmbedBuilder, PermissionsBitField, SlashCommandBuilder } from "discord.js";
import { requireOwner } from "../util/ownerOnly.js";
import { t, getLang } from "../util/i18n.js";
import fsSync from "fs";
import fs from "fs/promises";
const MIN_INTERVAL = 1;
const MAX_INTERVAL = 60;
export default {
name: "setinterval",
description: "Legt das Update-Check-Intervall für diesen Server fest (in Minuten)",
aliases: ["interval"],
guild: ["all"],
nsfw: false,
user_permissions: [PermissionsBitField.Flags.Administrator],
bot_permissions: [],
args_required: 1,
args_usage: `[minuten] Beispiel: vn!setinterval 10 (erlaubt: ${MIN_INTERVAL}${MAX_INTERVAL})`,
cooldown: 5,
data: new SlashCommandBuilder()
.setName("setinterval")
.setDescription("Legt das Update-Check-Intervall für diesen Server fest")
.addIntegerOption((opt) =>
opt
.setName("minuten")
.setDescription(`Intervall in Minuten (${MIN_INTERVAL}${MAX_INTERVAL})`)
.setMinValue(MIN_INTERVAL)
.setMaxValue(MAX_INTERVAL)
.setRequired(true)
),
async execute(client, ctx, args) {
const lang = loadLang(ctx.guild.id);
if (!await requireOwner(client, ctx, lang)) return;
const minutes = ctx.isSlash
? ctx.interaction.options.getInteger("minuten")
: parseInt(args[0], 10);
if (isNaN(minutes) || minutes < MIN_INTERVAL || minutes > MAX_INTERVAL) {
return ctx.reply(
`Ungültiger Wert. Bitte gib eine Zahl zwischen **${MIN_INTERVAL}** und **${MAX_INTERVAL}** Minuten an.`
);
}
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 existiert noch nicht wird erstellt
}
saveData.updateInterval = minutes;
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("Beim Speichern der Einstellung ist ein Fehler aufgetreten.");
}
const embed = new EmbedBuilder()
.setColor(ctx.guild.members.me.displayHexColor)
.setTitle("⏱️ Update-Intervall aktualisiert")
.setDescription(`Das Update-Check-Intervall für diesen Server wurde auf **${minutes} Minute(n)** gesetzt.`)
.setFooter({ text: "Der nächste Check erfolgt nach Ablauf des neuen Intervalls." });
return ctx.reply({ embeds: [embed] });
},
};
function loadLang(guildID) {
try {
const data = JSON.parse(fsSync.readFileSync(`./serverdata/${guildID}.json`, "utf8"));
return getLang(data);
} catch { return "de"; }
}