Update from Git Manager GUI
This commit is contained in:
83
commands/setinterval.js
Normal file
83
commands/setinterval.js
Normal 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"; }
|
||||
}
|
||||
Reference in New Issue
Block a user