error checking, logging, and all that idk

This commit is contained in:
tint 2023-06-11 20:55:35 -04:00
parent 669b05a617
commit cea8782746

View file

@ -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(/^<script type="application\/ld\+json" nonce="[^"]+">/, "");
json = json.replace(/^<script type="application\/ld\+json"( nonce="[^"]+")?>/, "");
console.log("Found JSON");
index = json.indexOf('}</script>');
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));