import { SlashCommandBuilder, EmbedBuilder, ChatInputCommandInteraction, MessageReaction, User }from 'discord.js' import * as crack from '../../utils/crack' export default { data: new SlashCommandBuilder().setName('crack').setDescription('Télécharge un crack sur le site online-fix.me !') .addStringOption(option => option.setName('jeu').setDescription('Quel jeu tu veux DL ?').setRequired(true)), async execute(interaction: ChatInputCommandInteraction) { await interaction.deferReply() let query = interaction.options.getString('jeu') if (!query) return let games = await crack.search(query) as crack.Game[] if (!Array.isArray(games)) { //if (games.toString() == "TypeError: Cannot read properties of undefined (reading 'split')") return interaction.followUp({ content: `J'ai rien trouvé pour "${query}" !` }) //else return interaction.followUp({ content: "Une erreur s'est produite ! ```" + games + "```" }) return interaction.followUp({ content: `J'ai rien trouvé pour "${query}" !` }) } let game = {} as crack.Game if (games.length > 1) { games = games.slice(0, 9) let list = '' for (let i = 0; i < games.length; i++) list += `\n${i + 1}. ${games[i].name} (${games[i].link})` let message = await interaction.followUp({ content: `J'ai trouvé plusieurs jeux pour "${query}" ! ${list}` }) let emojis = ['1️⃣', '2️⃣', '3️⃣', '4️⃣', '5️⃣', '6️⃣', '7️⃣', '8️⃣', '9️⃣'] for (let i = 0; i < games.length; i++) await message.react(emojis[i]) // Wait for a reaction to be added by the interaction author. const filter = (reaction: MessageReaction, user: User) => { if (reaction.emoji.name) { return emojis.includes(reaction.emoji.name) && user.id === interaction.user.id } return false } await message.awaitReactions({ filter, max: 1, time: 5000, errors: ['time'] }).then(collected => { console.log(collected) if (!collected.first) return let reaction = collected.first() let index = emojis.indexOf(reaction?.emoji.name ?? '') game = games[index] }).catch(() => { return interaction.followUp({ content: "T'as mis trop de temps à choisir !" }) }) } else game = games[0] let url = await crack.repo(game) if (!url) return let file = await crack.torrent(url) if (!file) return let filePath = await crack.download(url, file) if (!filePath) return let link = await crack.magnet(filePath) let embed = new EmbedBuilder() .setColor('#ffc370') .setTitle(game.name) .setURL(game.link) .setDescription(`Voici ce que j'ai trouvé pour "${query}".\nTu peux aussi cliquer sur [ce lien](https://angels-dev.fr/magnet/${link}) pour pouvoir télécharger le jeu direct !`) await interaction.followUp({ embeds: [embed], files: [filePath] }) } }