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