import { PermissionFlagsBits } from "discord.js"; import { Button } from "@voidy/framework"; export default new Button({ id: "MemberLogging", execute: async ({ interaction, args }) => { const [action, targetId] = args(interaction.customId); if (!action || !targetId) { await interaction.reply({ content: "Invalid button data.", ephemeral: true }); return; } const member = await interaction.guild?.members.fetch(targetId).catch(() => null); if (!member) { await interaction.reply({ content: "Member not found in this server.", ephemeral: true }); return; } switch (action) { case "Kick": { if (!interaction.memberPermissions?.has(PermissionFlagsBits.KickMembers)) { await interaction.reply({ content: "You need the **Kick Members** permission.", ephemeral: true, }); return; } if (!member.kickable) { await interaction.reply({ content: "I cannot kick this member.", ephemeral: true }); return; } await member.kick(`Kicked by ${interaction.user.tag} via member logging`); await interaction.reply({ content: `**${member.user.tag}** has been kicked.` }); break; } case "Ban": { if (!interaction.memberPermissions?.has(PermissionFlagsBits.BanMembers)) { await interaction.reply({ content: "You need the **Ban Members** permission.", ephemeral: true, }); return; } if (!member.bannable) { await interaction.reply({ content: "I cannot ban this member.", ephemeral: true }); return; } await member.ban({ reason: `Banned by ${interaction.user.tag} via member logging` }); await interaction.reply({ content: `**${member.user.tag}** has been banned.` }); break; } default: await interaction.reply({ content: "Unknown action.", ephemeral: true }); } }, });