// /warns — Verwarnungs-Historie eines Members einsehen / Eintrag löschen (Moderatoren) import { SlashCommandBuilder, PermissionFlagsBits, MessageFlags, EmbedBuilder } from 'discord.js'; import { warnsOf, deleteWarn } from '../../db.js'; import { brandColor } from '../../runtime-settings.js'; export const data = new SlashCommandBuilder() .setName('warns') .setDescription('Verwarnungen eines Members anzeigen (oder eine löschen)') .setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers) .addUserOption((o) => o.setName('member').setDescription('Wessen Verwarnungen?').setRequired(true)) .addIntegerOption((o) => o.setName('loeschen').setDescription('Optional: Verwarnungs-ID entfernen')); export async function execute(interaction) { const user = interaction.options.getUser('member'); const removeId = interaction.options.getInteger('loeschen'); if (removeId) { const removed = deleteWarn(removeId); await interaction.reply({ content: removed ? `🗑️ Verwarnung #${removeId} entfernt.` : `❌ Verwarnung #${removeId} nicht gefunden.`, flags: MessageFlags.Ephemeral, }); return; } const warns = warnsOf(user.id); if (warns.length === 0) { await interaction.reply({ content: `✅ **${user.username}** hat keine Verwarnungen.`, flags: MessageFlags.Ephemeral }); return; } const lines = warns .slice(-15) .map((w) => `\`#${w.id}\` ${w.created_at.slice(0, 10)} — ${w.reason} *(${w.moderator ?? '—'})*`); await interaction.reply({ embeds: [ new EmbedBuilder() .setColor(brandColor()) .setTitle(`⚠️ Verwarnungen: ${user.username} (${warns.length})`) .setDescription(lines.join('\n')) .setFooter({ text: 'Löschen: /warns member: loeschen:' }), ], flags: MessageFlags.Ephemeral, }); }