error checking, logging, and all that idk
This commit is contained in:
parent
669b05a617
commit
cea8782746
59
index.js
59
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(/^<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);
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
const data = await fetchData(message.content.split(" ")[0]);
|
||||
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));
|
||||
|
|
Loading…
Reference in a new issue