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) { async function fetchData(url) {
const res = await fetch(url, { const res = await fetch(url, {
headers: { headers: {
'User-Agent': 'curl/8.0.1', 'User-Agent': 'curl/8.1.0',
'Accept': '*/*' 'Accept': '*/*'
}, },
credentials: "omit", credentials: "omit",
@ -44,7 +44,8 @@ async function fetchData(url) {
return; return;
} }
let json = text.substring(index); 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>'); index = json.indexOf('}</script>');
if(index < 0) { if(index < 0) {
@ -71,23 +72,61 @@ client.on("messageCreate", async message => {
if(!/^https?:\/\/(www\.)?instagram\.com\/reel/.test(message.content)) { if(!/^https?:\/\/(www\.)?instagram\.com\/reel/.test(message.content)) {
return; 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) { if(!data) {
console.log("data is empty");
message.channel.send("Link had no data, or something went wrong");
return; return;
} }
message.channel.send({ const sendObj = {
embeds: [{ embeds: [{
author: { author: {
name: data.author.alternateName, name: data?.author?.alternateName,
icon_url: data.author.image, icon_url: data?.author?.image,
}, },
title: data.author.name, title: data?.author?.name,
description: data.headline, 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)); client.login(process.env.TOKEN).then(() => console.log("Logged into Discord as", client.user.username + "#" + client.user.discriminator));