File size: 2,584 Bytes
9660a60 a44de77 ef53174 9660a60 1f1fb57 ef53174 e2cc95e ef53174 a44de77 9660a60 a44de77 ef53174 a44de77 316f017 ef53174 0883c56 9660a60 ef53174 a44de77 9660a60 f2d1ac5 a44de77 f2d1ac5 298b298 f2d1ac5 e2cc95e f2d1ac5 ef53174 f2d1ac5 298b298 f2d1ac5 2bf50e5 f2d1ac5 c335007 2bf50e5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
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); |