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);