summaryrefslogtreecommitdiff
path: root/app.js
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-05-26 16:20:14 +0200
committerLinnea Gräf <nea@nea.moe>2024-05-26 16:20:14 +0200
commit19b5b4bbe0ced6bb140759b0d9ace73546aad8b0 (patch)
tree7a067c3d2b0bed8c617e08bbdd7c88d5c88f6bbc /app.js
downloadmycelium-warning-19b5b4bbe0ced6bb140759b0d9ace73546aad8b0.tar.gz
mycelium-warning-19b5b4bbe0ced6bb140759b0d9ace73546aad8b0.tar.bz2
mycelium-warning-19b5b4bbe0ced6bb140759b0d9ace73546aad8b0.zip
Initial
Diffstat (limited to 'app.js')
-rw-r--r--app.js69
1 files changed, 69 insertions, 0 deletions
diff --git a/app.js b/app.js
new file mode 100644
index 0000000..a319dcd
--- /dev/null
+++ b/app.js
@@ -0,0 +1,69 @@
+const HYPIXEL_API_KEY =process.env.HYPIXEL_API_KEY;
+const DISCORD_WEBHOOK_URL =process.env.DISCORD_WEBHOOK_URL;
+const CHECK_INTERVAL = 60 * 10; // 10 minutes
+const WARN_AFTER = 60 * 60 * 9; // 9 hours
+
+const profiles = [
+ {
+ profile: "Tomato",
+ playerId: "4154a5602654493094d3497d2ad6849f",
+ ping: "281489313840103426",
+ },
+];
+
+function getProfile(p) {
+ return fetch(
+ `https://api.hypixel.net/v2/skyblock/profiles?key=${HYPIXEL_API_KEY}&uuid=${p.playerId}`,
+ )
+ .then((it) => it.json())
+ .then((it) =>
+ it.profiles.find((profile) => profile.cute_name === p.profile),
+ );
+}
+function warn(userid) {
+ return fetch(DISCORD_WEBHOOK_URL+"?wait=true", {
+ headers: {
+ "content-type": "application/json",
+ },
+ body: JSON.stringify({
+ content: `<@${userid}> RATE MAL WER GERADE KEINE MYCELIUM COLLECTION BEKOMMT? DU!`,
+ allowed_mentions: {
+ users: [userid],
+ },
+ }),
+ method: "POST",
+ });
+}
+
+const lastCollectionGain = [];
+const lastCollection = [];
+for (i in profiles) {
+ lastCollectionGain[i] = Date.now();
+ lastCollection[i] = 0;
+}
+
+async function checkCollections() {
+ for (i in profiles) {
+ const p = profiles[i];
+ const data = await getProfile(p);
+ console.log(data)
+ let collectionTotal = 0;
+ for (memberid in data.members) {
+ const member = data.members[memberid]
+ const collectionOne = member.collection?.MYCEL;
+ if (collectionOne) collectionTotal += collectionOne;
+ }
+ const last = lastCollection[i];
+ if (last !== collectionTotal) {
+ lastCollection[i] = collectionTotal;
+ lastCollectionGain[i] = Date.now();
+ }
+ console.log("last: "+last)
+ console.log("current: "+collectionTotal)
+ if (Date.now() - lastCollectionGain[i] > WARN_AFTER * 1000) {
+ warn(p.ping).then(it => it.json()).then(console.log, console.error);
+ }
+ }
+}
+setInterval(checkCollections, CHECK_INTERVAL * 1000);
+checkCollections()