From 81daf4fccfa142c54cbf17d2ef571afb61d76663 Mon Sep 17 00:00:00 2001
From: Severin Sprenger <sevisprengger@gmail.com>
Date: Wed, 25 May 2022 07:50:17 +0200
Subject: [PATCH 1/3] Started to work on crafting command

---
 nodejs/src/commands/crafing.ts | 67 ++++++++++++++++++++++++++++++++++
 1 file changed, 67 insertions(+)
 create mode 100644 nodejs/src/commands/crafing.ts

diff --git a/nodejs/src/commands/crafing.ts b/nodejs/src/commands/crafing.ts
new file mode 100644
index 0000000..7635efa
--- /dev/null
+++ b/nodejs/src/commands/crafing.ts
@@ -0,0 +1,67 @@
+import { Message, MessageEmbed, ReplyMessageOptions } from 'discord.js'
+import fetch from 'node-fetch'
+
+//* Tested BakxY 10.03.2022 on version 1.3
+
+export default {
+    callback: async (ctx: Message, APEX_TOKEN: string, ...args: string[]) => {
+        var res = await fetch('https://api.mozambiquehe.re/crafting?auth=' + APEX_TOKEN)
+
+        if(res.status == 400)
+        {
+            ctx.reply({
+                content: 'Try again in a few minutes',
+                allowedMentions:{
+                    repliedUser: false
+                }
+            } as ReplyMessageOptions);
+        }
+
+        if(res.status == 403)
+        {
+            ctx.reply({
+                content: 'Bot owner fucked up with the keys',
+                allowedMentions:{
+                    repliedUser: false
+                }
+            } as ReplyMessageOptions);
+        }
+
+        if(res.status == 405)
+        {
+            ctx.reply({
+                content: 'API error',
+                allowedMentions:{
+                    repliedUser: false
+                }
+            } as ReplyMessageOptions);
+        }
+
+        if(res.status == 429)
+        {
+            ctx.reply({
+                content: 'Reached your rate limit, try again in a few minutes',
+                allowedMentions:{
+                    repliedUser: false
+                }
+            } as ReplyMessageOptions);
+        }
+
+        if(res.status == 500)
+        {
+            ctx.reply({
+                content: 'API brok, internal error',
+                allowedMentions:{
+                    repliedUser: false
+                }
+            } as ReplyMessageOptions);
+        }
+
+        if(res.status == 200)
+        {
+            var json = await res.json()
+        }
+
+
+    }
+}
\ No newline at end of file
-- 
GitLab


From 9593df6efd3b65be542a167f3c412dda49f1b7db Mon Sep 17 00:00:00 2001
From: Severin Sprenger <sevisprengger@gmail.com>
Date: Fri, 27 May 2022 21:21:11 +0200
Subject: [PATCH 2/3] Worked on time calculation

---
 .../commands/{crafing.ts => apex/crafting.ts} | 39 +++++++++++++++++++
 1 file changed, 39 insertions(+)
 rename nodejs/src/commands/{crafing.ts => apex/crafting.ts} (50%)

diff --git a/nodejs/src/commands/crafing.ts b/nodejs/src/commands/apex/crafting.ts
similarity index 50%
rename from nodejs/src/commands/crafing.ts
rename to nodejs/src/commands/apex/crafting.ts
index 7635efa..90b4cfb 100644
--- a/nodejs/src/commands/crafing.ts
+++ b/nodejs/src/commands/apex/crafting.ts
@@ -1,4 +1,5 @@
 import { Message, MessageEmbed, ReplyMessageOptions } from 'discord.js'
+import { parse } from 'dotenv';
 import fetch from 'node-fetch'
 
 //* Tested BakxY 10.03.2022 on version 1.3
@@ -60,6 +61,44 @@ export default {
         if(res.status == 200)
         {
             var json = await res.json()
+
+            var embedVar = new MessageEmbed()
+                    .setColor(0xEF2AEF)
+                    .setTitle(json[0]['bundleType'].charAt(0).toUpperCase() + json[0]['bundleType'].slice(1) + ' item ' + 'no. 1')
+                    .setThumbnail(json[0]['bundleContent'][0]['itemType']['asset'])
+                    .setFooter({text : 'Data from apexlegendsstatus.com'})
+                    .setTimestamp()
+
+            embedVar.addField('Name: ', json[0]['bundleContent'][0]['itemType']['rarity'].replace('_', ' ') + ' ' + json[0]['bundleContent'][0]['itemType']['name'].replace('_', ' '), true)
+            embedVar.addField('Cost: ', json[0]['bundleContent'][0]['cost'].toString(), true)
+
+            var timeUntilEnd = new Date(json[0]['end'])
+            var unixStartTime = new Date()
+            var timeDiffrence = timeUntilEnd.getTime() - unixStartTime.getTime() / 1000 - 10600
+
+            console.log((json[0]['end'] - json[0]['start'])/60/60)
+
+            console.log(timeUntilEnd.getTime())
+            console.log(unixStartTime.getTime() / 1000)
+            console.log(timeDiffrence)
+
+            var timeLeft = ''
+
+            if(timeDiffrence / 60 / 60 != 0)
+            {
+                timeLeft = (timeDiffrence / 60 / 60).toFixed() + ' h'
+                timeDiffrence -= parseInt((timeDiffrence / 60 / 60).toFixed()) * 60 * 60
+                console.log(timeDiffrence)
+            }
+
+            embedVar.addField('Until: ', timeLeft, true)
+
+            ctx.reply({
+                embeds: [embedVar],
+                allowedMentions:{
+                    repliedUser: false
+                }
+            } as ReplyMessageOptions);
         }
 
 
-- 
GitLab


From c8572c9dbde4e79d3a168dd2b0c1d9b1d02bd1a9 Mon Sep 17 00:00:00 2001
From: Severin Sprenger <sevisprengger@gmail.com>
Date: Sat, 28 May 2022 13:23:59 +0200
Subject: [PATCH 3/3] Finished crafing command

---
 nodejs/src/commands/apex/crafting.ts | 81 ++++++++++++++++------------
 1 file changed, 48 insertions(+), 33 deletions(-)

diff --git a/nodejs/src/commands/apex/crafting.ts b/nodejs/src/commands/apex/crafting.ts
index 90b4cfb..60dbaf1 100644
--- a/nodejs/src/commands/apex/crafting.ts
+++ b/nodejs/src/commands/apex/crafting.ts
@@ -2,7 +2,7 @@ import { Message, MessageEmbed, ReplyMessageOptions } from 'discord.js'
 import { parse } from 'dotenv';
 import fetch from 'node-fetch'
 
-//* Tested BakxY 10.03.2022 on version 1.3
+//* Tested BakxY 28.05.2022 on version 1.16
 
 export default {
     callback: async (ctx: Message, APEX_TOKEN: string, ...args: string[]) => {
@@ -62,43 +62,58 @@ export default {
         {
             var json = await res.json()
 
-            var embedVar = new MessageEmbed()
+            for(var y = 0; y < 2; y++)
+            {
+                for(var i = 0; i < 2; i++)
+                {
+                    var embedVar = new MessageEmbed()
                     .setColor(0xEF2AEF)
-                    .setTitle(json[0]['bundleType'].charAt(0).toUpperCase() + json[0]['bundleType'].slice(1) + ' item ' + 'no. 1')
-                    .setThumbnail(json[0]['bundleContent'][0]['itemType']['asset'])
+                    .setTitle(json[y]['bundleType'].charAt(0).toUpperCase() + json[y]['bundleType'].slice(1) + ' item ' + 'no. ' + (i + 1))
+                    .setThumbnail(json[y]['bundleContent'][i]['itemType']['asset'])
                     .setFooter({text : 'Data from apexlegendsstatus.com'})
                     .setTimestamp()
 
-            embedVar.addField('Name: ', json[0]['bundleContent'][0]['itemType']['rarity'].replace('_', ' ') + ' ' + json[0]['bundleContent'][0]['itemType']['name'].replace('_', ' '), true)
-            embedVar.addField('Cost: ', json[0]['bundleContent'][0]['cost'].toString(), true)
-
-            var timeUntilEnd = new Date(json[0]['end'])
-            var unixStartTime = new Date()
-            var timeDiffrence = timeUntilEnd.getTime() - unixStartTime.getTime() / 1000 - 10600
-
-            console.log((json[0]['end'] - json[0]['start'])/60/60)
-
-            console.log(timeUntilEnd.getTime())
-            console.log(unixStartTime.getTime() / 1000)
-            console.log(timeDiffrence)
-
-            var timeLeft = ''
-
-            if(timeDiffrence / 60 / 60 != 0)
-            {
-                timeLeft = (timeDiffrence / 60 / 60).toFixed() + ' h'
-                timeDiffrence -= parseInt((timeDiffrence / 60 / 60).toFixed()) * 60 * 60
-                console.log(timeDiffrence)
-            }
-
-            embedVar.addField('Until: ', timeLeft, true)
-
-            ctx.reply({
-                embeds: [embedVar],
-                allowedMentions:{
-                    repliedUser: false
+                    embedVar.addField('Name: ', json[y]['bundleContent'][i]['itemType']['name'].replaceAll('_', ' ').charAt(0).toUpperCase() + json[y]['bundleContent'][i]['itemType']['name'].replaceAll('_', ' ').slice(1), true)
+                    embedVar.addField('Cost: ', json[y]['bundleContent'][i]['cost'].toString(), true)
+
+                    var timeUntilEnd = new Date(json[y]['end'] * 1000)
+                    var unixStartTime = new Date()
+
+                    var timeLeft = ''
+
+                    if(7 - unixStartTime.getDay() - timeUntilEnd.getDay() > 0)
+                    {
+                        timeLeft += 7 - timeUntilEnd.getDay() - unixStartTime.getDay() + ' days '
+                    }
+                    if(timeUntilEnd.getHours() - unixStartTime.getHours() - 3 > 0)
+                    {
+                        timeLeft += (timeUntilEnd.getHours() - unixStartTime.getHours() - 3) + ' hours '
+                    }
+                    if(unixStartTime.getMinutes() - timeUntilEnd.getMinutes() > 0)
+                    {
+                        timeLeft += 60 - (unixStartTime.getMinutes() - timeUntilEnd.getMinutes()) + ' min '
+                    }
+
+                    embedVar.addField('Until: ', timeLeft, true)
+
+                    if(y == 0 && i == 0)
+                    {
+                        ctx.reply({
+                            embeds: [embedVar],
+                            allowedMentions:{
+                                repliedUser: false
+                            }
+                        } as ReplyMessageOptions);
+                    }
+                    else
+                    {
+                        ctx.channel.send({
+                            embeds: [embedVar],
+                        } as ReplyMessageOptions);
+                    }
+                    
                 }
-            } as ReplyMessageOptions);
+            }
         }
 
 
-- 
GitLab