Update server.js
Browse files
server.js
CHANGED
|
@@ -6,14 +6,30 @@ const WEBHOOK = process.env.WHOOK;
|
|
| 6 |
|
| 7 |
let lastMinute = -1, lastSnap = '', lastSent = '';
|
| 8 |
|
| 9 |
-
const
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
Object.entries(obj || {})
|
| 11 |
-
.filter(([, v]) => +v)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
.map(([k, v]) => `${k} **x${v}**`);
|
| 13 |
|
| 14 |
const build = (d) => {
|
| 15 |
-
const seeds = list(d.seeds);
|
| 16 |
-
const gears = list(d.gear);
|
| 17 |
const eggs = (d.eggs || []).filter(e => e.quantity)
|
| 18 |
.map(e => `${e.name} **x${e.quantity}**`);
|
| 19 |
|
|
@@ -31,7 +47,7 @@ const build = (d) => {
|
|
| 31 |
eggs.length ? `**EGG STOCK**\n${eggs.join('\n')}` : ''
|
| 32 |
].join('\n');
|
| 33 |
|
| 34 |
-
const alertWords = ['Godly Sprinkler', 'Master Sprinkler', '
|
| 35 |
const containsSpecial = alertWords.some(word => desc.includes(word));
|
| 36 |
|
| 37 |
return {
|
|
@@ -61,7 +77,7 @@ setInterval(async () => {
|
|
| 61 |
|
| 62 |
const time = new Date().toLocaleString('en-US', { timeZone: 'Asia/Jakarta' });
|
| 63 |
lastSent = new Date(time).toLocaleTimeString('id-ID', { hour12: false });
|
| 64 |
-
} catch
|
| 65 |
}, 250);
|
| 66 |
|
| 67 |
app.get('/', (_, res) => res.send(`Sent at ${lastSent || '-'}`));
|
|
|
|
| 6 |
|
| 7 |
let lastMinute = -1, lastSnap = '', lastSent = '';
|
| 8 |
|
| 9 |
+
const seedOrder = [
|
| 10 |
+
'Carrot', 'Strawberry', 'Blueberry', 'Orange Tulip', 'Tomato', 'Corn', 'Daffodil',
|
| 11 |
+
'Watermelon', 'Pumpkin', 'Apple', 'Bamboo', 'Coconut', 'Cactus', 'Dragon Fruit',
|
| 12 |
+
'Mango', 'Grape', 'Mushroom', 'Pepper', 'Cacao', 'Beanstalk', 'Ember Lily', 'Sugar Apple'
|
| 13 |
+
];
|
| 14 |
+
|
| 15 |
+
const gearOrder = [
|
| 16 |
+
'Watering Can', 'Trowel', 'Recall Wrench', 'Basic Sprinkler', 'Advanced Sprinkler',
|
| 17 |
+
'Godly Sprinkler', 'Lightning Rod', 'Master Sprinkler', 'Cleaning Spray',
|
| 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 |
|
|
|
|
| 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 {
|
|
|
|
| 77 |
|
| 78 |
const time = new Date().toLocaleString('en-US', { timeZone: 'Asia/Jakarta' });
|
| 79 |
lastSent = new Date(time).toLocaleTimeString('id-ID', { hour12: false });
|
| 80 |
+
} catch {}
|
| 81 |
}, 250);
|
| 82 |
|
| 83 |
app.get('/', (_, res) => res.send(`Sent at ${lastSent || '-'}`));
|