import { ActionRowBuilder, ButtonBuilder, ButtonStyle } from 'discord.js' import { v4 as uuid } from 'uuid' import { accountChoice, joingroup, leavegroup, loginScreen, overview, resume, serverConnection, splashScreen, startScreen } from '../assets/attachments' import { logger } from '../logger' import { Command } from '../structures/command' import { RunOptions } from '../types/commandTypes' import { configureServer, explainRoles, installation, loginInfo, useSyncgroup } from './mitgucken' export default new Command({ name: 'guides', description: 'Bekomme eine Auswahl von Guides per DM', options: [], run: async (interaction: RunOptions) => { const requestId = uuid() const guildId = interaction.interaction.guild?.id logger.info(`Starting guides interaction for user ${interaction.interaction.user.id}`, { requestId, guildId }) const mediaPlayerGuideButton = new ButtonBuilder() .setCustomId('jfInstallation') .setLabel('Media Player Installation') .setStyle(ButtonStyle.Primary) const accountSetupGuideButton = new ButtonBuilder() .setCustomId('configureServer') .setLabel('Server einstellen') .setStyle(ButtonStyle.Primary) const loginGuideButton = new ButtonBuilder() .setCustomId('login') .setLabel('Einloggen') .setStyle(ButtonStyle.Primary) const useSyncGroupGuideButton = new ButtonBuilder() .setCustomId('useSyncGroup') .setLabel('Watch Parties nutzen') .setStyle(ButtonStyle.Primary) const roleExplanationButton = new ButtonBuilder() .setCustomId('explainRoles') .setLabel('Wie bekomme ich Zugang') .setStyle(ButtonStyle.Primary) const row = new ActionRowBuilder() .addComponents(mediaPlayerGuideButton, accountSetupGuideButton, loginGuideButton, useSyncGroupGuideButton, roleExplanationButton) //const userDMchannel = await interaction.interaction.user.createDM() const response = await interaction.interaction.followUp({ content: `Hier ist eine Auswahl von Guides.`, components: [row] }) try { const guideSelection = await response.awaitMessageComponent({ time: 60_000 }) if (guideSelection.customId === 'jfInstallation') { const userDMChannel = await guideSelection.user.createDM() userDMChannel.send({ embeds: installation(), files: [splashScreen] }) } else if (guideSelection.customId === 'configureServer') { const userDMChannel = await guideSelection.user.createDM() userDMChannel.send({ embeds: configureServer(), files: [startScreen, serverConnection] }) } else if (guideSelection.customId === 'login') { const userDMChannel = await guideSelection.user.createDM() userDMChannel.send({ embeds: loginInfo(), files: [accountChoice, loginScreen] }) } else if (guideSelection.customId === 'useSyncGroup') { const userDMChannel = await guideSelection.user.createDM() userDMChannel.send({ embeds: useSyncgroup(), files: [overview, joingroup, resume, leavegroup] }) } else if (guideSelection.customId === 'explainRoles') { const userDMChannel = await guideSelection.user.createDM() userDMChannel.send(explainRoles()) } guideSelection.update({ content: "Hab ich dir per DM geschickt :)", components: [] }) } catch (error) { await interaction.interaction.editReply({ content: 'Das dauert mir zu lange, frag mich nochmal wenn du nen Guide brauchst', components: [] }); } } })