From cea87827463f7242d419f5c7c623b21e841d879d Mon Sep 17 00:00:00 2001 From: tint Date: Sun, 11 Jun 2023 20:55:35 -0400 Subject: [PATCH] error checking, logging, and all that idk --- index.js | 59 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 49 insertions(+), 10 deletions(-) diff --git a/index.js b/index.js index f2aa4b7..f316e50 100644 --- a/index.js +++ b/index.js @@ -23,7 +23,7 @@ const client = new discord.Client({ async function fetchData(url) { const res = await fetch(url, { headers: { - 'User-Agent': 'curl/8.0.1', + 'User-Agent': 'curl/8.1.0', 'Accept': '*/*' }, credentials: "omit", @@ -44,7 +44,8 @@ async function fetchData(url) { return; } let json = text.substring(index); - json = json.replace(/^'); if(index < 0) { @@ -71,23 +72,61 @@ client.on("messageCreate", async message => { if(!/^https?:\/\/(www\.)?instagram\.com\/reel/.test(message.content)) { return; } + const url = message.content.split(" ")[0]; + console.log("Fetching content for URL: " + url); - const data = await fetchData(message.content.split(" ")[0]); + let data; + try { + data = await fetchData(url); + } catch(err) { + console.log("Error fetching, retrying:", err); + try { + data = await fetchData(url); + } catch(err) { + console.log("Error fetching URL: " + url); + console.log("Error:", err); + message.channel.send("Failed to fetch data for link"); + return; + } + } + if(!data) { + console.log("data is empty"); + message.channel.send("Link had no data, or something went wrong"); return; } - message.channel.send({ + const sendObj = { embeds: [{ author: { - name: data.author.alternateName, - icon_url: data.author.image, + name: data?.author?.alternateName, + icon_url: data?.author?.image, }, - title: data.author.name, - description: data.headline, + title: data?.author?.name, + description: data?.headline, }], - files: data.video.map(d => d.contentUrl) - }); + files: (data.video || []).map(d => d.contentUrl) + }; + + const interval = setInterval(() => message.channel.sendTyping().catch(() => {}), 3000); + let success = true; + try { + console.log("posting..."); + message.channel.sendTyping().catch(() => {}); + await message.channel.send(sendObj); + } catch(err) { + console.log("Error posting to discord, attempting backup:", err); + sendObj.content = sendObj.files.join(" "); + delete sendObj.files; + try { + await message.channel.send(sendObj); + } catch(err) { + console.log("error posting backup", err); + success = false; + } + } + if(success) console.log("posted!"); + clearInterval(interval); }); client.login(process.env.TOKEN).then(() => console.log("Logged into Discord as", client.user.username + "#" + client.user.discriminator));