// /purge — Nachrichten im aktuellen Kanal massenlöschen (max 100, jünger als 14 Tage) import { SlashCommandBuilder, PermissionFlagsBits, MessageFlags, EmbedBuilder } from 'discord.js'; import { modlogChannelId, brandColor2 } from '../../runtime-settings.js'; export const data = new SlashCommandBuilder() .setName('purge') .setDescription('Löscht die letzten N Nachrichten in diesem Kanal') .setDefaultMemberPermissions(PermissionFlagsBits.ManageMessages) .addIntegerOption((o) => o.setName('anzahl').setDescription('Wie viele? (1–100)').setRequired(true).setMinValue(1).setMaxValue(100) ); export async function execute(interaction) { const count = interaction.options.getInteger('anzahl'); await interaction.deferReply({ flags: MessageFlags.Ephemeral }); let deleted; try { // true = Nachrichten >14 Tage still überspringen (Discord-API-Limit) deleted = await interaction.channel.bulkDelete(count, true); } catch { await interaction.editReply('❌ Löschen fehlgeschlagen — Bot braucht „Nachrichten verwalten" hier.'); return; } const logChannelId = modlogChannelId(); if (logChannelId && deleted.size > 0) { const channel = await interaction.client.channels.fetch(logChannelId).catch(() => null); await channel?.send({ embeds: [ new EmbedBuilder() .setColor(brandColor2()) .setTitle('🧹 Purge') .setDescription( `**${deleted.size}** Nachrichten in <#${interaction.channelId}> gelöscht von **${interaction.user.username}**` ) .setTimestamp(), ], }).catch(() => {}); } await interaction.editReply( `🧹 **${deleted.size}** Nachrichten gelöscht.${deleted.size < count ? ' (ältere als 14 Tage kann Discord nicht massenlöschen)' : ''}` ); }