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

81
commands/plugin.js Normal file
View File

@@ -0,0 +1,81 @@
import { EmbedBuilder, SlashCommandBuilder } from "discord.js";
import { Spiget } from "spiget";
import {
generateAvatarLink,
generateAuthorURL,
generateResourceIconURL,
generateResourceURL,
} from "../util/helpers.js";
const spiget = new Spiget("Viper-Network");
export default {
name: "plugin",
description: "Ruft ein Plugin anhand seiner Ressourcen-ID ab und gibt Details zurück",
aliases: [],
guild: ["all"],
nsfw: false,
user_permissions: [],
bot_permissions: [],
args_required: 1,
args_usage: "[ressourcen_id]",
cooldown: 5,
data: new SlashCommandBuilder()
.setName("plugin")
.setDescription("Zeigt Details zu einem Plugin an")
.addStringOption((opt) =>
opt.setName("ressourcen_id").setDescription("Spiget Ressourcen-ID").setRequired(true)
),
async execute(client, ctx, args) {
const resourceID = ctx.isSlash
? ctx.interaction.options.getString("ressourcen_id")
: args[0];
let resource;
try {
resource = await spiget.getResource(resourceID);
} catch (e) {
client.logger.error(e);
return ctx.reply(`Ups! \`${resourceID}\` ist keine gültige Ressourcen-ID!`);
}
let author;
try {
author = await resource.getAuthor();
} catch (e) {
client.logger.error(e);
return ctx.reply(`Ups! Der Autor für Ressource \`${resourceID}\` konnte nicht gefunden werden.`);
}
let latestVersion;
try {
const res = await fetch(`https://api.spigotmc.org/legacy/update.php?resource=${resourceID}`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
latestVersion = (await res.text()).trim();
} catch (e) {
client.logger.error(e);
return ctx.reply("Versionsinformationen konnten nicht abgerufen werden. Bitte versuche es erneut.");
}
const authorURL = generateAuthorURL(author.name, author.id);
const authorAvatarURL = generateAvatarLink(author.id);
const resourceIconURL = generateResourceIconURL(resource);
const resourceURL = generateResourceURL(resourceID);
const embed = new EmbedBuilder()
.setAuthor({ name: `Autor: ${author.name}`, iconURL: authorAvatarURL, url: authorURL })
.setColor(ctx.guild.members.me.displayHexColor)
.setTitle(resource.name)
.setDescription(resource.tag)
.addFields([
{ name: "📦 Version", value: latestVersion, inline: true },
{ name: "⬇️ Download", value: resourceURL, inline: true },
])
.setThumbnail(resourceIconURL)
.setTimestamp();
return ctx.reply({ embeds: [embed] });
},
};