gag / server.js
fast72's picture
Update server.js
316f017 verified
const express = require('express');
const axios = require('axios');
const app = express();
const WEBHOOK = process.env.WHOOK;
let lastSnap = '', lastMinute = -1, lastSent = '';
const seedOrder = [
'Carrot', 'Strawberry', 'Blueberry', 'Orange Tulip', 'Tomato', 'Corn', 'Daffodil',
'Watermelon', 'Pumpkin', 'Apple', 'Bamboo', 'Coconut', 'Cactus', 'Dragon Fruit',
'Mango', 'Grape', 'Mushroom', 'Pepper', 'Cacao', 'Beanstalk', 'Ember Lily', 'Sugar Apple'
];
const gearOrder = [
'Watering Can', 'Trowel', 'Recall Wrench', 'Basic Sprinkler', 'Advanced Sprinkler',
'Godly Sprinkler', 'Lightning Rod', 'Master Sprinkler', 'Cleaning Spray',
'Favorite Tool', 'Harvest Tool', 'Friendship Pot'
];
const sortList = (arr, order) =>
arr
.filter(i => i?.value)
.sort((a, b) => order.indexOf(a.name) - order.indexOf(b.name))
.map(i => `${i.name} **x${i.value}**`);
const build = (seeds, gears, eggs) => {
const snap = JSON.stringify([seeds, gears, eggs]);
if (snap === lastSnap) return;
lastSnap = snap;
const desc = [
`**SEEDS STOCK**`,
...seeds,
'',
`**GEAR STOCK**`,
...gears,
'',
eggs.length ? `**EGG STOCK**\n${eggs.map(e => `${e.name} **x${e.value}**`).join('\n')}` : ''
].join('\n');
const pingItems = ['Godly Sprinkler', 'Cactus', 'Lightning Rod', 'Master Sprinkler', 'Beanstalk', 'Ember Lily', 'Sugar Apple', 'Legendary Egg', 'Mythical Egg', 'Bug Egg'];
const ping = pingItems.some(item => desc.includes(item));
return {
content: ping ? '@everyone' : undefined,
embeds: [{
description: desc.trim(),
color: 0x5865F2,
timestamp: new Date().toISOString()
}]
};
};
setInterval(() => {
const now = new Date(), m = now.getMinutes();
if (m % 5 !== 0 || m === lastMinute) return;
lastMinute = m;
setTimeout(async () => {
try {
const { data } = await axios.get('https://fast72-stock.hf.space/');
if (!data?.seeds || !data?.gears) return;
const seeds = sortList(data.seeds, seedOrder);
const gears = sortList(data.gears, gearOrder);
const eggs = data.eggs?.filter(e => e?.value) || [];
const payload = build(seeds, gears, eggs);
if (!payload) return;
await axios.post(WEBHOOK, payload);
const time = new Date().toLocaleString('en-US', { timeZone: 'Asia/Jakarta' });
lastSent = new Date(time).toLocaleTimeString('id-ID', { hour12: false });
} catch (e) {
console.error('[ERROR]', e.message);
}
}, 5000);
}, 3000);
app.get('/', (_, res) => res.send(`Sent at ${lastSent || '-'}`));
app.listen(7860);