Update server.js
Browse files
server.js
CHANGED
|
@@ -18,33 +18,21 @@ const gearOrder = [
|
|
| 18 |
'Favorite Tool', 'Harvest Tool', 'Friendship Pot'
|
| 19 |
];
|
| 20 |
|
| 21 |
-
const fetchStock = async (type) => {
|
| 22 |
-
const url = `https://www.growagardenvalues.com/stock/refresh_stock.php?type=${type}`;
|
| 23 |
-
const { data } = await axios.get(url);
|
| 24 |
-
return (data?.data?.records || []).reduce((obj, item) => {
|
| 25 |
-
const name = item?.Data?.Name;
|
| 26 |
-
const amount = +item?.Amount;
|
| 27 |
-
if (name && amount) obj[name] = amount;
|
| 28 |
-
return obj;
|
| 29 |
-
}, {});
|
| 30 |
-
};
|
| 31 |
-
|
| 32 |
-
const fetchEggs = async () => {
|
| 33 |
-
const { data } = await axios.get('https://www.growagardenvalues.com/stock/refresh_stock.php?type=eggs');
|
| 34 |
-
return (data?.data?.records || [])
|
| 35 |
-
.filter(e => +e.Amount)
|
| 36 |
-
.map(e => `${e.Data?.Name} **x${e.Amount}**`);
|
| 37 |
-
};
|
| 38 |
-
|
| 39 |
const list = (obj, order = []) =>
|
| 40 |
Object.entries(obj || {})
|
|
|
|
| 41 |
.sort((a, b) => {
|
| 42 |
const i = order.indexOf(a[0]), j = order.indexOf(b[0]);
|
| 43 |
return (i === -1 ? 999 : i) - (j === -1 ? 999 : j);
|
| 44 |
})
|
| 45 |
.map(([k, v]) => `${k} **x${v}**`);
|
| 46 |
|
| 47 |
-
const build = (
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 48 |
const snap = JSON.stringify([seeds, gears, eggs]);
|
| 49 |
if (snap === lastSnap) return;
|
| 50 |
lastSnap = snap;
|
|
@@ -59,11 +47,11 @@ const build = (seeds, gears, eggs) => {
|
|
| 59 |
eggs.length ? `**EGG STOCK**\n${eggs.join('\n')}` : ''
|
| 60 |
].join('\n');
|
| 61 |
|
| 62 |
-
const
|
| 63 |
-
const
|
| 64 |
|
| 65 |
return {
|
| 66 |
-
content:
|
| 67 |
embeds: [{
|
| 68 |
description: desc.trim(),
|
| 69 |
color: 0x5865F2,
|
|
@@ -77,15 +65,11 @@ setInterval(async () => {
|
|
| 77 |
if (m % 5 !== 0 || m === lastMinute) return;
|
| 78 |
|
| 79 |
try {
|
| 80 |
-
const
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
const seeds = list(seedsRaw, seedOrder);
|
| 87 |
-
const gears = list(gearsRaw, gearOrder);
|
| 88 |
-
const payload = build(seeds, gears, eggs);
|
| 89 |
if (!payload) return;
|
| 90 |
|
| 91 |
await axios.post(WEBHOOK, payload);
|
|
|
|
| 18 |
'Favorite Tool', 'Harvest Tool', 'Friendship Pot'
|
| 19 |
];
|
| 20 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
const list = (obj, order = []) =>
|
| 22 |
Object.entries(obj || {})
|
| 23 |
+
.filter(([k, v]) => +v)
|
| 24 |
.sort((a, b) => {
|
| 25 |
const i = order.indexOf(a[0]), j = order.indexOf(b[0]);
|
| 26 |
return (i === -1 ? 999 : i) - (j === -1 ? 999 : j);
|
| 27 |
})
|
| 28 |
.map(([k, v]) => `${k} **x${v}**`);
|
| 29 |
|
| 30 |
+
const build = (d) => {
|
| 31 |
+
const seeds = list(d.seeds, seedOrder);
|
| 32 |
+
const gears = list(d.gear, gearOrder);
|
| 33 |
+
const eggs = (d.eggs || []).filter(e => e.quantity)
|
| 34 |
+
.map(e => `${e.name} **x${e.quantity}**`);
|
| 35 |
+
|
| 36 |
const snap = JSON.stringify([seeds, gears, eggs]);
|
| 37 |
if (snap === lastSnap) return;
|
| 38 |
lastSnap = snap;
|
|
|
|
| 47 |
eggs.length ? `**EGG STOCK**\n${eggs.join('\n')}` : ''
|
| 48 |
].join('\n');
|
| 49 |
|
| 50 |
+
const alertWords = ['Godly Sprinkler', 'Master Sprinkler', 'Beanstalk', 'Ember Lily', 'Sugar Apple', 'Legendary Egg', 'Mythical Egg', 'Bug Egg'];
|
| 51 |
+
const containsSpecial = alertWords.some(word => desc.includes(word));
|
| 52 |
|
| 53 |
return {
|
| 54 |
+
content: containsSpecial ? '@everyone' : undefined,
|
| 55 |
embeds: [{
|
| 56 |
description: desc.trim(),
|
| 57 |
color: 0x5865F2,
|
|
|
|
| 65 |
if (m % 5 !== 0 || m === lastMinute) return;
|
| 66 |
|
| 67 |
try {
|
| 68 |
+
const { data } = await axios.get('https://www.gamersberg.com/api/grow-a-garden/stock');
|
| 69 |
+
const d = data?.data?.[0];
|
| 70 |
+
if (!data.success || !d) return;
|
| 71 |
+
|
| 72 |
+
const payload = build(d);
|
|
|
|
|
|
|
|
|
|
|
|
|
| 73 |
if (!payload) return;
|
| 74 |
|
| 75 |
await axios.post(WEBHOOK, payload);
|