From af8fbeb9f09d4ed1c6c678868dd7dd7eee5cc5ee Mon Sep 17 00:00:00 2001
From: Cristiano Pires <cpires@labsxd.com>
Date: Sat, 2 Dec 2023 14:42:58 +0000
Subject: [PATCH] Error handling -> Search Anime; Protection against low result
 search.

---
 commands/search/searchAnime.js | 57 +++++++++++++---------------------
 1 file changed, 21 insertions(+), 36 deletions(-)

diff --git a/commands/search/searchAnime.js b/commands/search/searchAnime.js
index f650ce0..9d1670d 100644
--- a/commands/search/searchAnime.js
+++ b/commands/search/searchAnime.js
@@ -1,4 +1,4 @@
-const {Command, aniList, Random} = require('../../lib.js')
+const {Command, aniList, Random, ErrorMessage, ErrorType} = require('../../lib.js')
 
 const {EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle} = require('discord.js');
 
@@ -18,46 +18,31 @@ class anime extends Command{
             if(!args[0]) return  new ErrorMessage(this.client).send(ErrorType.Arguments, message)
             const data = await new aniList().searchAnime(args.join(' '));
             if(data=='Error') return new ErrorMessage(this.client).send(ErrorType.Arguments, message, [`Couldn't find any anime with the search argument you provided.`])
+            // console.log('SearchAnime: Data:', data[1].title.romaji, data.length);
+
             const embed = new EmbedBuilder()
-                .setTitle('First 4 results of search:')
+            var embeds = [embed]
+            const randomID = Random();
+            const row = new ActionRowBuilder();
+            var fieldPayload = [];
+            for(var i = 0; i<data.length; i++)
+            {
+                fieldPayload.push({name:data[i].title.romaji+' ['+data[i].title.english+']', value:i.toString()})
+                embeds.push(new EmbedBuilder().setImage(data[i].coverImage).setURL('https://www.rem.wordfights.com'));
+                row.addComponents(
+                        new ButtonBuilder()
+                            .setCustomId(randomID+i)
+                            .setLabel(i.toString())
+                            .setStyle(ButtonStyle.Success)    
+                    );
+            }  
+            embed.setTitle(`First ${data.length>=4?'4':data.length} results of search:`)
                 .setAuthor({name:"Rem-chan", iconURL:"https://i.imgur.com/g6FSNhL.png",url:'https://rem.wordfights.com/addtodiscord'})
                 .setColor(0x003284)
                 .setURL('https://www.rem.wordfights.com')
                 .setFooter({ text: 'Rem-Chan on', iconURL: 'https://i.imgur.com/g6FSNhL.png' })
-                .setImage(data[0].coverImage)
-                .setTimestamp()  
-                .addFields(
-                    {name:data[0].title.romaji+' ['+data[0].title.english+']', value:'1'},
-                    {name:data[1].title.romaji+' ['+data[0].title.english+']', value:'2'},
-                    {name:data[2].title.romaji+' ['+data[0].title.english+']', value:'3'},
-                    {name:data[3].title.romaji+' ['+data[0].title.english+']', value:'4'},
-                    );
-            var embeds = [embed]
-            embeds.push(new EmbedBuilder().setImage(data[1].coverImage).setURL('https://www.rem.wordfights.com'));
-            embeds.push(new EmbedBuilder().setImage(data[2].coverImage).setURL('https://www.rem.wordfights.com'));
-            embeds.push(new EmbedBuilder().setImage(data[3].coverImage).setURL('https://www.rem.wordfights.com'));
-            
-            const randomID = Random();
-            const row = new ActionRowBuilder()
-            .addComponents(
-                new ButtonBuilder()
-                    .setCustomId(randomID+1)
-                    .setLabel('1')
-                    .setStyle(ButtonStyle.Success),
-                new ButtonBuilder()
-                    .setCustomId(randomID+2)
-                    .setLabel('2')
-                    .setStyle(ButtonStyle.Success),
-                new ButtonBuilder()
-                    .setCustomId(randomID+3)
-                    .setLabel('3')
-                    .setStyle(ButtonStyle.Success),
-                new ButtonBuilder()
-                    .setCustomId(randomID+4)
-                    .setLabel('4')
-                    .setStyle(ButtonStyle.Success),
-
-            );
+                .setTimestamp()
+                .addFields(fieldPayload);
             const filter = i => i.customId.slice(0,-1) === randomID;
             await message.channel.send({ephemeral: true, embeds, components: [row] }); 
             const collector = message.channel.createMessageComponentCollector({ filter, time: 60000 });