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

60 lines
2.0 KiB
JavaScript

import { EmbedBuilder, PermissionsBitField, SlashCommandBuilder } from "discord.js";
import fs from "fs/promises";
export default {
name: "list",
description: "Listet alle Plugin-Update-Listener für diesen Server auf",
aliases: [],
guild: ["all"],
nsfw: false,
user_permissions: [PermissionsBitField.Flags.Administrator],
bot_permissions: [],
args_required: 0,
args_usage: "",
cooldown: 5,
data: new SlashCommandBuilder()
.setName("list")
.setDescription("Listet alle beobachteten Plugins dieses Servers auf"),
async execute(client, ctx) {
const guildID = ctx.guild.id;
const filePath = `./serverdata/${guildID}.json`;
let data;
try {
const raw = await fs.readFile(filePath, "utf8");
data = JSON.parse(raw);
} catch {
return ctx.reply(
`Dieser Server hat keine beobachteten Ressourcen. Nutze \`${client.config.prefix}add\` um eine hinzuzufügen.`
);
}
if (!data.watchedResources || data.watchedResources.length === 0) {
return ctx.reply(
`Dieser Server hat keine beobachteten Ressourcen. Nutze \`${client.config.prefix}add\` um eine hinzuzufügen.`
);
}
const list = data.watchedResources
.map((r) => {
const name = r.resourceName ? `**${r.resourceName}**` : `ID: \`${r.resourceID}\``;
const version = r.lastCheckedVersion ? ` • v${r.lastCheckedVersion}` : "";
return `${name}${version}\n└ Kanal: <#${r.channelID}> • ID: \`${r.resourceID}\``;
})
.join("\n\n");
const intervalInfo = data.updateInterval
? `⏱️ Update-Intervall: ${data.updateInterval} Minute(n)`
: "⏱️ Update-Intervall: 5 Minuten (Standard)";
const listEmbed = new EmbedBuilder()
.setColor(ctx.guild.members.me.displayHexColor)
.setTitle(`📋 Beobachtete Plugins (${data.watchedResources.length})`)
.setDescription(list)
.setFooter({ text: intervalInfo });
return ctx.reply({ embeds: [listEmbed] });
},
};