diff --git a/src/commands/utility/admin.ts b/src/commands/utility/admin.ts index 8f5060b..215fc47 100644 --- a/src/commands/utility/admin.ts +++ b/src/commands/utility/admin.ts @@ -1,4 +1,4 @@ -import { SlashCommandBuilder, PermissionFlagsBits, EmbedBuilder, GuildMember, MessageFlags } from 'discord.js'; +import { SlashCommandBuilder, PermissionFlagsBits, EmbedBuilder, GuildMember } from 'discord.js'; import { Command } from '../../structures/Command.js'; import { ExtendedClient } from '../../structures/ExtendedClient.js'; @@ -222,7 +222,7 @@ const command: Command = { ) .setTimestamp(); - await interaction.reply({ embeds: [embed], flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ embeds: [embed], ephemeral: true }); return; } @@ -238,12 +238,12 @@ const command: Command = { const reason = interaction.options.getString('reason') ?? 'Kein Grund'; if (!target) { - await interaction.reply({ content: 'Nutzer nicht gefunden.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Nutzer nicht gefunden.', ephemeral: true }); return; } if (!target.kickable) { - await interaction.reply({ content: 'Ich kann diesen Nutzer nicht kicken.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Ich kann diesen Nutzer nicht kicken.', ephemeral: true }); return; } @@ -263,7 +263,7 @@ const command: Command = { await sendModerationLog(interaction.client, guildId, 'kicks', embed); } catch (error) { console.error(error); - await interaction.reply({ content: '❌ Fehler beim Kicken.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: '❌ Fehler beim Kicken.', ephemeral: true }); } return; } @@ -273,7 +273,7 @@ const command: Command = { const reason = interaction.options.getString('reason')!; if (!target) { - await interaction.reply({ content: 'Nutzer nicht gefunden.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Nutzer nicht gefunden.', ephemeral: true }); return; } @@ -342,7 +342,7 @@ const command: Command = { const target = interaction.options.getMember('target') as GuildMember; if (!target) { - await interaction.reply({ content: 'Nutzer nicht gefunden.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Nutzer nicht gefunden.', ephemeral: true }); return; } @@ -354,7 +354,7 @@ const command: Command = { ); if (!latestWarn) { - await interaction.reply({ content: 'Keine Warnung für diesen Nutzer gefunden.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Keine Warnung für diesen Nutzer gefunden.', ephemeral: true }); return; } @@ -370,7 +370,7 @@ const command: Command = { const reason = interaction.options.getString('reason') ?? 'Kein Grund'; if (!target) { - await interaction.reply({ content: 'Nutzer nicht gefunden.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Nutzer nicht gefunden.', ephemeral: true }); return; } @@ -394,7 +394,7 @@ const command: Command = { const multiplier = unitSeconds[unit!]; if (!multiplier) { - await interaction.reply({ content: '❌ Ungültige Zeiteinheit.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: '❌ Ungültige Zeiteinheit.', ephemeral: true }); return; } @@ -412,7 +412,7 @@ const command: Command = { }; durationText = `${duration} ${unitNames[unit!]}`; } else { - await interaction.reply({ content: '❌ Dauer oder Zeiteinheit angeben.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: '❌ Dauer oder Zeiteinheit angeben.', ephemeral: true }); return; } @@ -433,7 +433,7 @@ const command: Command = { await sendModerationLog(interaction.client, guildId, 'mutes', embed); } catch (error) { console.error(error); - await interaction.reply({ content: '❌ Fehler beim Muten.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: '❌ Fehler beim Muten.', ephemeral: true }); } return; } @@ -442,7 +442,7 @@ const command: Command = { const target = interaction.options.getMember('target') as GuildMember; if (!target) { - await interaction.reply({ content: 'Nutzer nicht gefunden.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Nutzer nicht gefunden.', ephemeral: true }); return; } @@ -451,7 +451,7 @@ const command: Command = { await interaction.reply(`✅ Entmutet: ${target.user.tag}`); } catch (error) { console.error(error); - await interaction.reply({ content: '❌ Fehler beim Entmuten.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: '❌ Fehler beim Entmuten.', ephemeral: true }); } return; } @@ -462,12 +462,12 @@ const command: Command = { const deleteDays = interaction.options.getInteger('delete_days') ?? 0; if (!target) { - await interaction.reply({ content: 'Nutzer nicht gefunden.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Nutzer nicht gefunden.', ephemeral: true }); return; } if (!target.bannable) { - await interaction.reply({ content: 'Ich kann diesen Nutzer nicht bannen.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Ich kann diesen Nutzer nicht bannen.', ephemeral: true }); return; } @@ -488,7 +488,7 @@ const command: Command = { await sendModerationLog(interaction.client, guildId, 'bans', embed); } catch (error) { console.error(error); - await interaction.reply({ content: '❌ Fehler beim Bannen.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: '❌ Fehler beim Bannen.', ephemeral: true }); } return; } @@ -505,7 +505,7 @@ const command: Command = { await interaction.reply(`✅ Entbannt: ${targetId}`); } catch (error: any) { console.error(error); - await interaction.reply({ content: `❌ Fehler beim Entbannen: ${error.message}`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `❌ Fehler beim Entbannen: ${error.message}`, ephemeral: true }); } return; } @@ -525,14 +525,14 @@ const command: Command = { { name: 'Mute-Dauer', value: `${(settings?.warn_mute_duration ?? 1800) / 60} Min`, inline: true } ); - await interaction.reply({ embeds: [embed], flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ embeds: [embed], ephemeral: true }); return; } if (setting === 'warn_threshold') { const threshold = parseInt(value!); if (isNaN(threshold) || threshold < 1) { - await interaction.reply({ content: '❌ Ungültiger Wert. Mindestens 1.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: '❌ Ungültiger Wert. Mindestens 1.', ephemeral: true }); return; } DB.run('UPDATE guild_settings SET warn_threshold = ? WHERE guild_id = ?', threshold, guildId); @@ -543,7 +543,7 @@ const command: Command = { if (setting === 'warn_action') { const validActions = ['none', 'kick', 'mute', 'ban']; if (!validActions.includes(value!)) { - await interaction.reply({ content: `❌ Ungültige Aktion. Möglich: ${validActions.join(', ')}`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `❌ Ungültige Aktion. Möglich: ${validActions.join(', ')}`, ephemeral: true }); return; } DB.run('UPDATE guild_settings SET warn_action = ? WHERE guild_id = ?', value, guildId); @@ -554,7 +554,7 @@ const command: Command = { if (setting === 'warn_mute_duration') { const duration = durationValue ?? 1800; if (duration < 0) { - await interaction.reply({ content: '❌ Ungültige Dauer.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: '❌ Ungültige Dauer.', ephemeral: true }); return; } DB.run('UPDATE guild_settings SET warn_mute_duration = ? WHERE guild_id = ?', duration, guildId); @@ -570,12 +570,12 @@ const command: Command = { const channel = interaction.channel; if (!channel || !channel.isTextBased()) { - await interaction.reply({ content: '❌ Dieser Befehl kann nur in Text-Channels verwendet werden.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: '❌ Dieser Befehl kann nur in Text-Channels verwendet werden.', ephemeral: true }); return; } // Defer reply since bulk delete can take time - await interaction.deferReply({ flags: [MessageFlags.Ephemeral] }); + await interaction.deferReply({ ephemeral: true }); let deletedCount = 0; diff --git a/src/commands/utility/help.ts b/src/commands/utility/help.ts index 0c8be82..876d579 100644 --- a/src/commands/utility/help.ts +++ b/src/commands/utility/help.ts @@ -1,4 +1,4 @@ -import { SlashCommandBuilder, EmbedBuilder, PermissionFlagsBits, MessageFlags } from 'discord.js'; +import { SlashCommandBuilder, EmbedBuilder, PermissionFlagsBits } from 'discord.js'; import { Command } from '../../structures/Command.js'; const command: Command = { @@ -52,7 +52,7 @@ const command: Command = { } } - await interaction.reply({ embeds: [embed], flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ embeds: [embed], ephemeral: true }); }, }; diff --git a/src/commands/utility/log.ts b/src/commands/utility/log.ts index 7385f54..0a9af7c 100644 --- a/src/commands/utility/log.ts +++ b/src/commands/utility/log.ts @@ -1,4 +1,4 @@ -import { SlashCommandBuilder, PermissionFlagsBits, EmbedBuilder, MessageFlags } from 'discord.js'; +import { SlashCommandBuilder, PermissionFlagsBits, EmbedBuilder } from 'discord.js'; import { Command } from '../../structures/Command.js'; const AVAILABLE_EVENTS = [ @@ -75,13 +75,13 @@ const command: Command = { ) .setTimestamp(); - await interaction.reply({ embeds: [embed], flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ embeds: [embed], ephemeral: true }); return; } // Admin only for all commands if (!isAdmin) { - await interaction.reply({ content: '❌ Keine Berechtigung. Moderatoren erforderlich.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: '❌ Keine Berechtigung. Moderatoren erforderlich.', ephemeral: true }); return; } @@ -94,7 +94,7 @@ const command: Command = { guildId ); - await interaction.reply({ content: `✅ Log-Kanal auf ${channel} gesetzt.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `✅ Log-Kanal auf ${channel} gesetzt.`, ephemeral: true }); return; } @@ -122,7 +122,7 @@ const command: Command = { ) .setTimestamp(); - await interaction.reply({ embeds: [embed], flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ embeds: [embed], ephemeral: true }); return; } @@ -133,7 +133,7 @@ const command: Command = { const currentEvents = (settings?.log_events || '').split(',').filter(Boolean); if (currentEvents.includes(event)) { - await interaction.reply({ content: `ℹ️ Event **${event}** ist bereits aktiviert.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `ℹ️ Event **${event}** ist bereits aktiviert.`, ephemeral: true }); return; } @@ -145,7 +145,7 @@ const command: Command = { guildId ); - await interaction.reply({ content: `✅ Event **${event}** aktiviert.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `✅ Event **${event}** aktiviert.`, ephemeral: true }); return; } @@ -156,7 +156,7 @@ const command: Command = { const currentEvents = (settings?.log_events || '').split(',').filter(Boolean); if (!currentEvents.includes(event)) { - await interaction.reply({ content: `ℹ️ Event **${event}** ist nicht aktiviert.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `ℹ️ Event **${event}** ist nicht aktiviert.`, ephemeral: true }); return; } @@ -168,7 +168,7 @@ const command: Command = { guildId ); - await interaction.reply({ content: `✅ Event **${event}** deaktiviert.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `✅ Event **${event}** deaktiviert.`, ephemeral: true }); } }, }; diff --git a/src/commands/utility/owner.ts b/src/commands/utility/owner.ts index ac17608..db54c1e 100644 --- a/src/commands/utility/owner.ts +++ b/src/commands/utility/owner.ts @@ -1,4 +1,4 @@ -import { SlashCommandBuilder, EmbedBuilder, MessageFlags } from 'discord.js'; +import { SlashCommandBuilder, EmbedBuilder } from 'discord.js'; import { Command } from '../../structures/Command.js'; import { Deployer } from '../../structures/Deployer.js'; @@ -28,7 +28,7 @@ const command: Command = { if (!client.application?.owner) await client.application?.fetch(); if (interaction.user.id !== client.application?.owner?.id) { - await interaction.reply({ content: 'Keine Berechtigung.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Keine Berechtigung.', ephemeral: true }); return; } @@ -46,12 +46,12 @@ const command: Command = { ) .setTimestamp(); - await interaction.reply({ embeds: [embed], flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ embeds: [embed], ephemeral: true }); return; } if (subcommand === 'deploy') { - await interaction.deferReply({ flags: [MessageFlags.Ephemeral] }); + await interaction.deferReply({ ephemeral: true }); try { const count = await Deployer.deploy(client.user!.id, client.token!); @@ -64,7 +64,7 @@ const command: Command = { } if (subcommand === 'stats') { - await interaction.deferReply({ flags: [MessageFlags.Ephemeral] }); + await interaction.deferReply({ ephemeral: true }); const uptime = process.uptime(); const days = Math.floor(uptime / 86400); @@ -89,7 +89,7 @@ const command: Command = { } if (subcommand === 'servers') { - await interaction.deferReply({ flags: [MessageFlags.Ephemeral] }); + await interaction.deferReply({ ephemeral: true }); const guilds = client.guilds.cache.map((guild: any) => `• **${guild.name}** \`(${guild.id})\` - ${guild.memberCount} Mitglieder` @@ -117,7 +117,7 @@ const command: Command = { const nextEmbed = new EmbedBuilder() .setColor(0xf1c40f) .setDescription(chunks[i].substring(0, 4000)); - await interaction.followUp({ embeds: [nextEmbed], flags: [MessageFlags.Ephemeral] }); + await interaction.followUp({ embeds: [nextEmbed], ephemeral: true }); } return; } diff --git a/src/commands/utility/rolesetup.ts b/src/commands/utility/rolesetup.ts index 03a76aa..7336629 100644 --- a/src/commands/utility/rolesetup.ts +++ b/src/commands/utility/rolesetup.ts @@ -1,4 +1,4 @@ -import { SlashCommandBuilder, PermissionFlagsBits, EmbedBuilder, MessageFlags, ChannelType, ComponentType, StringSelectMenuBuilder, StringSelectMenuOptionBuilder } from 'discord.js'; +import { SlashCommandBuilder, PermissionFlagsBits, EmbedBuilder, ChannelType, ComponentType, StringSelectMenuBuilder, StringSelectMenuOptionBuilder } from 'discord.js'; import { Command } from '../../structures/Command.js'; async function updateRoleMessage(client: any, category: any) { @@ -156,7 +156,7 @@ const command: Command = { const categories: any[] = DB.all('SELECT * FROM role_categories WHERE guild_id = ? ORDER BY category_name ASC', guildId); if (categories.length === 0) { - await interaction.reply({ content: 'Keine Rollen-Kategorien konfiguriert.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Keine Rollen-Kategorien konfiguriert.', ephemeral: true }); return; } @@ -180,13 +180,13 @@ const command: Command = { }); } - await interaction.reply({ embeds: [embed], flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ embeds: [embed], ephemeral: true }); return; } if (subcommand === 'create') { if (!isAdmin) { - await interaction.reply({ content: 'Keine Berechtigung. Moderatoren erforderlich.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Keine Berechtigung. Moderatoren erforderlich.', ephemeral: true }); return; } @@ -195,7 +195,7 @@ const command: Command = { const existing = DB.get('SELECT * FROM role_categories WHERE guild_id = ? AND category_name = ?', guildId, categoryName); if (existing) { - await interaction.reply({ content: `Kategorie "${categoryName}" existiert bereits.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `Kategorie "${categoryName}" existiert bereits.`, ephemeral: true }); return; } @@ -211,13 +211,13 @@ const command: Command = { categoryName ); - await interaction.reply({ content: `Kategorie "${categoryName}" erstellt in ${channel}.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `Kategorie "${categoryName}" erstellt in ${channel}.`, ephemeral: true }); return; } if (subcommand === 'add') { if (!isAdmin) { - await interaction.reply({ content: 'Keine Berechtigung. Moderatoren erforderlich.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Keine Berechtigung. Moderatoren erforderlich.', ephemeral: true }); return; } @@ -227,13 +227,13 @@ const command: Command = { const category: any = DB.get('SELECT * FROM role_categories WHERE guild_id = ? AND category_name = ?', guildId, kategorie); if (!category) { - await interaction.reply({ content: `Kategorie "${kategorie}" nicht gefunden.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `Kategorie "${kategorie}" nicht gefunden.`, ephemeral: true }); return; } const existing = DB.get('SELECT * FROM role_options WHERE category_id = ? AND role_id = ?', category.id, role.id); if (existing) { - await interaction.reply({ content: `Rolle ${role.name} ist bereits in "${kategorie}".`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `Rolle ${role.name} ist bereits in "${kategorie}".`, ephemeral: true }); return; } @@ -248,13 +248,13 @@ const command: Command = { ); await updateRoleMessage(interaction.client, category); - await interaction.reply({ content: `${role.name} zu "${kategorie}" hinzugefügt.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `${role.name} zu "${kategorie}" hinzugefügt.`, ephemeral: true }); return; } if (subcommand === 'edit') { if (!isAdmin) { - await interaction.reply({ content: 'Keine Berechtigung. Moderatoren erforderlich.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Keine Berechtigung. Moderatoren erforderlich.', ephemeral: true }); return; } @@ -265,13 +265,13 @@ const command: Command = { const category: any = DB.get('SELECT * FROM role_categories WHERE guild_id = ? AND category_name = ?', guildId, kategorie); if (!category) { - await interaction.reply({ content: `Kategorie "${kategorie}" nicht gefunden.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `Kategorie "${kategorie}" nicht gefunden.`, ephemeral: true }); return; } const option: any = DB.get('SELECT * FROM role_options WHERE category_id = ? AND role_id = ?', category.id, oldRole.id); if (!option) { - await interaction.reply({ content: `Rolle ${oldRole.name} ist nicht in "${kategorie}".`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `Rolle ${oldRole.name} ist nicht in "${kategorie}".`, ephemeral: true }); return; } @@ -288,13 +288,13 @@ const command: Command = { ); await updateRoleMessage(interaction.client, category); - await interaction.reply({ content: `Option in "${kategorie}" aktualisiert.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `Option in "${kategorie}" aktualisiert.`, ephemeral: true }); return; } if (subcommand === 'remove') { if (!isAdmin) { - await interaction.reply({ content: 'Keine Berechtigung. Moderatoren erforderlich.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Keine Berechtigung. Moderatoren erforderlich.', ephemeral: true }); return; } @@ -303,13 +303,13 @@ const command: Command = { const category: any = DB.get('SELECT * FROM role_categories WHERE guild_id = ? AND category_name = ?', guildId, kategorie); if (!category) { - await interaction.reply({ content: `Kategorie "${kategorie}" nicht gefunden.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `Kategorie "${kategorie}" nicht gefunden.`, ephemeral: true }); return; } const option: any = DB.get('SELECT * FROM role_options WHERE category_id = ? AND role_id = ?', category.id, role.id); if (!option) { - await interaction.reply({ content: `Rolle ${role.name} ist nicht in "${kategorie}".`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `Rolle ${role.name} ist nicht in "${kategorie}".`, ephemeral: true }); return; } @@ -326,13 +326,13 @@ const command: Command = { DB.run('DELETE FROM role_options WHERE id = ?', option.id); await updateRoleMessage(interaction.client, category); - await interaction.reply({ content: `${role.name} aus "${kategorie}" entfernt.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `${role.name} aus "${kategorie}" entfernt.`, ephemeral: true }); return; } if (subcommand === 'delete') { if (!isAdmin) { - await interaction.reply({ content: 'Keine Berechtigung. Moderatoren erforderlich.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Keine Berechtigung. Moderatoren erforderlich.', ephemeral: true }); return; } @@ -340,7 +340,7 @@ const command: Command = { const category: any = DB.get('SELECT * FROM role_categories WHERE guild_id = ? AND category_name = ?', guildId, kategorie); if (!category) { - await interaction.reply({ content: `Kategorie "${kategorie}" nicht gefunden.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `Kategorie "${kategorie}" nicht gefunden.`, ephemeral: true }); return; } @@ -368,13 +368,13 @@ const command: Command = { DB.run('DELETE FROM role_categories WHERE id = ?', category.id); - await interaction.reply({ content: `Kategorie "${kategorie}" geloescht.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `Kategorie "${kategorie}" geloescht.`, ephemeral: true }); return; } if (subcommand === 'config') { if (!isAdmin) { - await interaction.reply({ content: 'Keine Berechtigung. Moderatoren erforderlich.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Keine Berechtigung. Moderatoren erforderlich.', ephemeral: true }); return; } @@ -385,7 +385,7 @@ const command: Command = { const category: any = DB.get('SELECT * FROM role_categories WHERE guild_id = ? AND category_name = ?', guildId, kategorie); if (!category) { - await interaction.reply({ content: `Kategorie "${kategorie}" nicht gefunden.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `Kategorie "${kategorie}" nicht gefunden.`, ephemeral: true }); return; } @@ -404,11 +404,11 @@ const command: Command = { } if (updates.length === 0) { - await interaction.reply({ content: 'Keine Aenderungen angegeben.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Keine Aenderungen angegeben.', ephemeral: true }); return; } - await interaction.reply({ content: `Konfiguration aktualisiert: ${updates.join(', ')}`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `Konfiguration aktualisiert: ${updates.join(', ')}`, ephemeral: true }); } } }; diff --git a/src/commands/utility/timer.ts b/src/commands/utility/timer.ts index 09a1258..5b36851 100644 --- a/src/commands/utility/timer.ts +++ b/src/commands/utility/timer.ts @@ -1,4 +1,4 @@ -import { SlashCommandBuilder, PermissionFlagsBits, EmbedBuilder, MessageFlags } from 'discord.js'; +import { SlashCommandBuilder, PermissionFlagsBits, EmbedBuilder } from 'discord.js'; import { Command } from '../../structures/Command.js'; // Parse time duration strings like "30s", "2h", "1d30m" @@ -159,7 +159,7 @@ const command: Command = { ) .setTimestamp(); - await interaction.reply({ embeds: [embed], flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ embeds: [embed], ephemeral: true }); return; } @@ -182,7 +182,7 @@ const command: Command = { if (!targetTime || targetTime <= now) { await interaction.reply({ content: '❌ Ungültige Zeitangabe. Verwende z.B.: "30min", "2h30m", "25.12.2024 14:30" oder "morgen 15:00"', - flags: [MessageFlags.Ephemeral] + ephemeral: true }); return; } @@ -209,14 +209,14 @@ const command: Command = { await interaction.reply({ content: `✅ Erinnerung gesetzt (ID: ${result.lastInsertRowid}) für **${timeStr.trim()}**`, - flags: [MessageFlags.Ephemeral] + ephemeral: true }); return; } if (subcommand === 'remove') { if (!isAdmin) { - await interaction.reply({ content: '❌ Keine Berechtigung. Moderatoren erforderlich.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: '❌ Keine Berechtigung. Moderatoren erforderlich.', ephemeral: true }); return; } @@ -225,11 +225,11 @@ const command: Command = { const result = DB.run('DELETE FROM reminders WHERE id = ? AND guild_id = ?', timerId, guildId); if (result.changes === 0) { - await interaction.reply({ content: `❌ Timer mit ID ${timerId} nicht gefunden.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `❌ Timer mit ID ${timerId} nicht gefunden.`, ephemeral: true }); return; } - await interaction.reply({ content: `✅ Timer mit ID ${timerId} entfernt.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `✅ Timer mit ID ${timerId} entfernt.`, ephemeral: true }); return; } @@ -241,7 +241,7 @@ const command: Command = { ); if (reminders.length === 0) { - await interaction.reply({ content: 'Keine Timer in diesem Kanal.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Keine Timer in diesem Kanal.', ephemeral: true }); return; } @@ -275,20 +275,20 @@ const command: Command = { } embed.setDescription(chunks[0]); - await interaction.reply({ embeds: [embed], flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ embeds: [embed], ephemeral: true }); for (let i = 1; i < chunks.length; i++) { const nextEmbed = new EmbedBuilder() .setColor(0x3498db) .setDescription(chunks[i]); - await interaction.followUp({ embeds: [nextEmbed], flags: [MessageFlags.Ephemeral] }); + await interaction.followUp({ embeds: [nextEmbed], ephemeral: true }); } return; } if (subcommand === 'listall') { if (!isAdmin) { - await interaction.reply({ content: '❌ Keine Berechtigung. Moderatoren erforderlich.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: '❌ Keine Berechtigung. Moderatoren erforderlich.', ephemeral: true }); return; } @@ -298,7 +298,7 @@ const command: Command = { ); if (reminders.length === 0) { - await interaction.reply({ content: 'Keine Timer auf dem Server.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Keine Timer auf dem Server.', ephemeral: true }); return; } @@ -332,13 +332,13 @@ const command: Command = { } embed.setDescription(chunks[0]); - await interaction.reply({ embeds: [embed], flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ embeds: [embed], ephemeral: true }); for (let i = 1; i < chunks.length; i++) { const nextEmbed = new EmbedBuilder() .setColor(0xe74c3c) .setDescription(chunks[i]); - await interaction.followUp({ embeds: [nextEmbed], flags: [MessageFlags.Ephemeral] }); + await interaction.followUp({ embeds: [nextEmbed], ephemeral: true }); } } }, diff --git a/src/commands/utility/trigger.ts b/src/commands/utility/trigger.ts index 04a114a..0889cf3 100644 --- a/src/commands/utility/trigger.ts +++ b/src/commands/utility/trigger.ts @@ -1,4 +1,4 @@ -import { SlashCommandBuilder, PermissionFlagsBits, EmbedBuilder, MessageFlags } from 'discord.js'; +import { SlashCommandBuilder, PermissionFlagsBits, EmbedBuilder } from 'discord.js'; import { Command } from '../../structures/Command.js'; const command: Command = { @@ -53,7 +53,7 @@ const command: Command = { ) .setTimestamp(); - await interaction.reply({ embeds: [embed], flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ embeds: [embed], ephemeral: true }); return; } @@ -61,7 +61,7 @@ const command: Command = { const triggers: any[] = DB.all('SELECT * FROM auto_responses WHERE guild_id = ? ORDER BY trigger_word ASC', guildId); if (triggers.length === 0) { - await interaction.reply({ content: 'Keine Trigger konfiguriert.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Keine Trigger konfiguriert.', ephemeral: true }); return; } @@ -80,20 +80,20 @@ const command: Command = { } embed.setDescription(chunks[0]); - await interaction.reply({ embeds: [embed], flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ embeds: [embed], ephemeral: true }); for (let i = 1; i < chunks.length; i++) { const nextEmbed = new EmbedBuilder() .setColor(0x3498db) .setDescription(chunks[i]); - await interaction.followUp({ embeds: [nextEmbed], flags: [MessageFlags.Ephemeral] }); + await interaction.followUp({ embeds: [nextEmbed], ephemeral: true }); } return; } // Admin only for add/remove if (!isAdmin) { - await interaction.reply({ content: '❌ Keine Berechtigung. Moderatoren erforderlich.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: '❌ Keine Berechtigung. Moderatoren erforderlich.', ephemeral: true }); return; } @@ -109,7 +109,7 @@ const command: Command = { responseText ); - await interaction.reply({ content: `✅ Trigger **${triggerWord}** hinzugefügt/aktualisiert.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `✅ Trigger **${triggerWord}** hinzugefügt/aktualisiert.`, ephemeral: true }); return; } @@ -119,11 +119,11 @@ const command: Command = { const result = DB.run('DELETE FROM auto_responses WHERE guild_id = ? AND trigger_word = ?', guildId, triggerWord); if (result.changes === 0) { - await interaction.reply({ content: `❌ Trigger **${triggerWord}** nicht gefunden.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `❌ Trigger **${triggerWord}** nicht gefunden.`, ephemeral: true }); return; } - await interaction.reply({ content: `✅ Trigger **${triggerWord}** entfernt.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `✅ Trigger **${triggerWord}** entfernt.`, ephemeral: true }); } }, }; diff --git a/src/commands/utility/twitch.ts b/src/commands/utility/twitch.ts index 417c1b2..6826bd1 100644 --- a/src/commands/utility/twitch.ts +++ b/src/commands/utility/twitch.ts @@ -1,4 +1,4 @@ -import { SlashCommandBuilder, PermissionFlagsBits, EmbedBuilder, MessageFlags } from 'discord.js'; +import { SlashCommandBuilder, PermissionFlagsBits, EmbedBuilder } from 'discord.js'; import { Command } from '../../structures/Command.js'; import { TwitchManager } from '../../structures/TwitchManager.js'; import { ExtendedClient } from '../../structures/ExtendedClient.js'; @@ -69,7 +69,7 @@ const command: Command = { ) .setTimestamp(); - await interaction.reply({ embeds: [embed], flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ embeds: [embed], ephemeral: true }); return; } @@ -107,7 +107,7 @@ const command: Command = { if (subcommand === 'list') { const monitors: any[] = DB.all('SELECT * FROM twitch_monitors WHERE guild_id = ? AND discord_channel_id = ?', guildId, interaction.channelId); if (monitors.length === 0) { - await interaction.reply({ content: 'Keine Twitch-Kanäle überwacht.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Keine Twitch-Kanäle überwacht.', ephemeral: true }); return; } @@ -117,19 +117,19 @@ const command: Command = { .setColor(0x6441a5) .setDescription(list); - await interaction.reply({ embeds: [embed], flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ embeds: [embed], ephemeral: true }); return; } if (subcommand === 'listall') { if (!isAdmin) { - await interaction.reply({ content: '❌ Keine Berechtigung.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: '❌ Keine Berechtigung.', ephemeral: true }); return; } const monitors: any[] = DB.all('SELECT * FROM twitch_monitors WHERE guild_id = ? ORDER BY channel_name ASC', guildId); if (monitors.length === 0) { - await interaction.reply({ content: 'Keine Twitch-Kanäle überwacht.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Keine Twitch-Kanäle überwacht.', ephemeral: true }); return; } @@ -151,25 +151,24 @@ const command: Command = { } embed.setDescription(chunks[0]); - await interaction.reply({ embeds: [embed], flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ embeds: [embed], ephemeral: true }); for (let i = 1; i < chunks.length; i++) { const nextEmbed = new EmbedBuilder() .setColor(0x6441a5) .setDescription(chunks[i]); - await interaction.followUp({ embeds: [nextEmbed], flags: [MessageFlags.Ephemeral] }); + await interaction.followUp({ embeds: [nextEmbed], ephemeral: true }); } return; } // Admin only for add/remove if (!isAdmin) { - await interaction.reply({ content: '❌ Keine Berechtigung.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: '❌ Keine Berechtigung.', ephemeral: true }); return; } if (subcommand === 'add') { - const discordChannel = interaction.options.getChannel('channel'); const streamersInput = interaction.options.getString('streamers')!; const message = interaction.options.getString('message'); const discordChannelId = interaction.channelId; @@ -181,7 +180,7 @@ const command: Command = { .filter((s: string) => s.length > 0); if (streamers.length === 0) { - await interaction.reply({ content: '❌ Keine gültigen Streamer angegeben.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: '❌ Keine gültigen Streamer angegeben.', ephemeral: true }); return; } @@ -191,10 +190,7 @@ const command: Command = { for (const streamer of streamers) { try { // Check if stream exists - const stream = await TwitchManager.fetchStreamData(streamer); - if (!stream) { - // Streamer might be valid but offline - still add them - } + await TwitchManager.fetchStreamData(streamer); // Check if already exists const existing = DB.get('SELECT id FROM twitch_monitors WHERE guild_id = ? AND channel_name = ?', guildId, streamer); @@ -220,7 +216,7 @@ const command: Command = { if (results.updated > 0) reply += `\n🔄 Aktualisiert: ${results.updated}`; if (results.errors > 0) reply += `\n❌ Fehler: ${results.errors} (${errors.join(', ')})`; - await interaction.reply({ content: reply, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: reply, ephemeral: true }); return; } @@ -232,7 +228,7 @@ const command: Command = { .filter((s: string) => s.length > 0); if (streamers.length === 0) { - await interaction.reply({ content: '❌ Keine gültigen Streamer angegeben.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: '❌ Keine gültigen Streamer angegeben.', ephemeral: true }); return; } @@ -253,7 +249,7 @@ const command: Command = { if (results.removed > 0) reply += `✅ ${results.removed} Streamer entfernt.`; if (results.notFound > 0) reply += `\n❌ Nicht gefunden: ${notFound.join(', ')}`; - await interaction.reply({ content: reply, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: reply, ephemeral: true }); } }, }; diff --git a/src/commands/utility/twitchmonitor.ts b/src/commands/utility/twitchmonitor.ts index ac12afc..d9e8930 100644 --- a/src/commands/utility/twitchmonitor.ts +++ b/src/commands/utility/twitchmonitor.ts @@ -1,4 +1,4 @@ -import { SlashCommandBuilder, PermissionFlagsBits, EmbedBuilder, MessageFlags, ChannelType } from 'discord.js'; +import { SlashCommandBuilder, PermissionFlagsBits, EmbedBuilder, ChannelType } from 'discord.js'; import { Command } from '../../structures/Command.js'; import { TwitchMonitor } from '../../structures/TwitchMonitor.js'; @@ -54,7 +54,7 @@ const command: Command = { ) .setTimestamp(); - await interaction.reply({ embeds: [embed], flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ embeds: [embed], ephemeral: true }); return; } @@ -62,7 +62,7 @@ const command: Command = { const monitors: any[] = DB.all('SELECT * FROM twitch_monitor_channels WHERE guild_id = ? ORDER BY twitch_channel ASC', guildId); if (monitors.length === 0) { - await interaction.reply({ content: 'Keine Twitch-Kanäle überwacht.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Keine Twitch-Kanäle überwacht.', ephemeral: true }); return; } @@ -74,12 +74,12 @@ const command: Command = { ).join('\n')) .setTimestamp(); - await interaction.reply({ embeds: [embed], flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ embeds: [embed], ephemeral: true }); return; } if (!isAdmin) { - await interaction.reply({ content: 'Keine Berechtigung. Moderatoren erforderlich.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Keine Berechtigung. Moderatoren erforderlich.', ephemeral: true }); return; } @@ -89,7 +89,7 @@ const command: Command = { const existing = DB.get('SELECT * FROM twitch_monitor_channels WHERE guild_id = ? AND twitch_channel = ?', guildId, twitchChannel); if (existing) { - await interaction.reply({ content: `${twitchChannel} wird bereits überwacht.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `${twitchChannel} wird bereits überwacht.`, ephemeral: true }); return; } @@ -115,7 +115,7 @@ const command: Command = { const monitor = TwitchMonitor.getInstance(); await monitor.addMonitor(guildId, twitchChannel, discordChannel.id, webhook.url); - await interaction.reply({ content: `${twitchChannel} wird jetzt überwacht.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `${twitchChannel} wird jetzt überwacht.`, ephemeral: true }); return; } @@ -124,7 +124,7 @@ const command: Command = { const monitor: any = DB.get('SELECT * FROM twitch_monitor_channels WHERE guild_id = ? AND twitch_channel = ?', guildId, twitchChannel); if (!monitor) { - await interaction.reply({ content: `${twitchChannel} wird nicht überwacht.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `${twitchChannel} wird nicht überwacht.`, ephemeral: true }); return; } @@ -133,7 +133,7 @@ const command: Command = { const twitchMonitor = TwitchMonitor.getInstance(); await twitchMonitor.removeMonitor(guildId, twitchChannel); - await interaction.reply({ content: `${twitchChannel} wurde entfernt.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `${twitchChannel} wurde entfernt.`, ephemeral: true }); } }, }; diff --git a/src/commands/utility/welcome.ts b/src/commands/utility/welcome.ts index c2ca64f..de19e46 100644 --- a/src/commands/utility/welcome.ts +++ b/src/commands/utility/welcome.ts @@ -1,4 +1,4 @@ -import { SlashCommandBuilder, PermissionFlagsBits, EmbedBuilder, MessageFlags } from 'discord.js'; +import { SlashCommandBuilder, PermissionFlagsBits, EmbedBuilder } from 'discord.js'; import { Command } from '../../structures/Command.js'; const command: Command = { @@ -75,7 +75,7 @@ const command: Command = { ) .setTimestamp(); - await interaction.reply({ embeds: [embed], flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ embeds: [embed], ephemeral: true }); return; } @@ -100,13 +100,13 @@ const command: Command = { ) .setTimestamp(); - await interaction.reply({ embeds: [embed], flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ embeds: [embed], ephemeral: true }); return; } // Admin only for modify commands if (!isAdmin) { - await interaction.reply({ content: '❌ Keine Berechtigung. Moderatoren erforderlich.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: '❌ Keine Berechtigung. Moderatoren erforderlich.', ephemeral: true }); return; } @@ -119,7 +119,7 @@ const command: Command = { guildId ); - await interaction.reply({ content: `✅ Kanal für Willkommen/Abschied auf ${channel} gesetzt.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `✅ Kanal für Willkommen/Abschied auf ${channel} gesetzt.`, ephemeral: true }); return; } @@ -136,7 +136,7 @@ const command: Command = { ); const label = type === 'welcome' ? 'Willkommensnachricht' : 'Abschiedsnachricht'; - await interaction.reply({ content: `✅ ${label} gesetzt:\n\`\`\`\n${message}\n\`\`\``, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `✅ ${label} gesetzt:\n\`\`\`\n${message}\n\`\`\``, ephemeral: true }); return; } @@ -150,7 +150,7 @@ const command: Command = { ); const label = type === 'welcome' ? 'Willkommensnachricht' : 'Abschiedsnachricht'; - await interaction.reply({ content: `✅ ${label} entfernt.`, flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: `✅ ${label} entfernt.`, ephemeral: true }); } }, }; diff --git a/src/events/interactionCreate.ts b/src/events/interactionCreate.ts index 8094237..f3bf613 100644 --- a/src/events/interactionCreate.ts +++ b/src/events/interactionCreate.ts @@ -1,4 +1,4 @@ -import { Events, MessageFlags, Interaction } from 'discord.js'; +import { Events, Interaction, GuildMember } from 'discord.js'; import { ExtendedClient } from '../structures/ExtendedClient.js'; export default { @@ -10,11 +10,11 @@ export default { if (customId.startsWith('role_select_')) { const categoryName = customId.replace('role_select_', ''); const selectedValue = interaction.values[0]; - const member = interaction.member; const guild = interaction.guild; + const member = interaction.member as GuildMember; - if (!guild || !member || !('roles' in member)) { - await interaction.reply({ content: 'Dieser Befehl kann nur auf Servern verwendet werden.', flags: [MessageFlags.Ephemeral] }); + if (!guild || !member || !member.roles) { + await interaction.reply({ content: 'Dieser Befehl kann nur auf Servern verwendet werden.', ephemeral: true }); return; } @@ -25,7 +25,7 @@ export default { ); if (!category) { - await interaction.reply({ content: 'Kategorie nicht gefunden.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Kategorie nicht gefunden.', ephemeral: true }); return; } @@ -41,12 +41,12 @@ export default { if (removedCount > 0) { await interaction.reply({ content: `Alle Rollen aus "${categoryName}" wurden entfernt.`, - flags: [MessageFlags.Ephemeral] + ephemeral: true }); } else { await interaction.reply({ content: `Du hast keine Rollen aus "${categoryName}".`, - flags: [MessageFlags.Ephemeral] + ephemeral: true }); } return; @@ -59,13 +59,13 @@ export default { ); if (!option) { - await interaction.reply({ content: 'Rolle nicht gefunden.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Rolle nicht gefunden.', ephemeral: true }); return; } const discordRole = guild.roles.cache.get(selectedValue); if (!discordRole) { - await interaction.reply({ content: 'Diese Rolle existiert nicht mehr.', flags: [MessageFlags.Ephemeral] }); + await interaction.reply({ content: 'Diese Rolle existiert nicht mehr.', ephemeral: true }); return; } @@ -76,7 +76,7 @@ export default { await member.roles.remove(selectedValue); await interaction.reply({ content: `Die Rolle ${option.emoji ? option.emoji + ' ' : ''}${discordRole.name} wurde entfernt.`, - flags: [MessageFlags.Ephemeral] + ephemeral: true }); } else { const options: any[] = client.DB.all('SELECT * FROM role_options WHERE category_id = ?', category.id); @@ -88,7 +88,7 @@ export default { await member.roles.add(selectedValue); await interaction.reply({ content: `Du hast jetzt die Rolle ${option.emoji ? option.emoji + ' ' : ''}${discordRole.name}!`, - flags: [MessageFlags.Ephemeral] + ephemeral: true }); } } else { @@ -96,21 +96,21 @@ export default { await member.roles.remove(selectedValue); await interaction.reply({ content: `Die Rolle ${option.emoji ? option.emoji + ' ' : ''}${discordRole.name} wurde entfernt.`, - flags: [MessageFlags.Ephemeral] + ephemeral: true }); } else { const userRoles = member.roles.cache.filter((r: any) => !r.managed && r.id !== guild.id).size; if (category.max_roles > 0 && userRoles >= category.max_roles) { await interaction.reply({ content: `Du kannst maximal ${category.max_roles} Rollen aus dieser Kategorie haben.`, - flags: [MessageFlags.Ephemeral] + ephemeral: true }); return; } await member.roles.add(selectedValue); await interaction.reply({ content: `Du hast jetzt die Rolle ${option.emoji ? option.emoji + ' ' : ''}${discordRole.name}!`, - flags: [MessageFlags.Ephemeral] + ephemeral: true }); } } @@ -136,7 +136,7 @@ export default { `, interaction.commandName); } catch (error) { console.error(error); - const replyOptions = { content: 'There was an error while executing this command!', flags: [MessageFlags.Ephemeral] }; + const replyOptions = { content: 'There was an error while executing this command!', ephemeral: true }; if (interaction.replied || interaction.deferred) { await interaction.followUp(replyOptions); } else {