blob: bfbdc446f6ea9a2d99d8c50c308a1d337c784759 (
plain)
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
|
const fetch = require('node-fetch');
const dotenv = require('dotenv').config();
const roleId = process.env.ROLE_ID;
const interval = process.env.INTERVAL_IN_SECONDS; // Interval in Sekunden
const eventName = process.env.EVENT_NAME; // Der Name des Events
const eventLocation = process.env.EVENT_LOCATION; // Die Location des Events
const webhookUrl = process.env.WEBHOOK_URL; // Webhook-URL
const url = 'https://api.soopy.dev/skyblock/chevents/get'; // API-URL
var lastStatus = false; // Speichert den letzten Status, ob das Event aktiv war
function sendDiscordMessage(message) {
fetch(webhookUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
content: message,
username: 'Powder Tracker', // Optional: Custom-Bot-Name
})
})
.then(res => res.text())
.then(text => console.log(text))
.catch(err => console.error('Fehler beim Senden der Webhook-Nachricht:', err));
}
setInterval(() => {
fetch(url)
.then(res => res.json())
.then(json => {
const eventInfo = json.data.running_events[eventLocation];
const specificEvent = eventInfo && eventInfo.find(e => e.event === eventName);
// Überprüfung, ob das Event aktiv ist
const currentTime = json.data.curr_time;
const eventActive = specificEvent && currentTime <= specificEvent.ends_at;
const remainingTimeMs = specificEvent ? specificEvent.ends_at - currentTime : 0; // Verbleibende Zeit in Millisekunden
const remainingTimeMin = Math.floor(remainingTimeMs / 60000); // Verbleibende Zeit in Minuten
const lobbyCount = specificEvent ? specificEvent.lobby_count : 0; // Anzahl der Lobbys
console.log(`Event '${eventName}' in '${eventLocation}': ${eventActive ? 'Aktiv' : 'Inaktiv'}`);
if (eventActive && !lastStatus) {
const message = `<@&${roleId}> Hey there is a '${eventName}' in '${eventLocation}' aktiv. Time Left: ${remainingTimeMin} Min. Lobbys: ${lobbyCount}.`;
sendDiscordMessage(message);
lastStatus = true; // Aktualisierung des Status, um Mehrfachbenachrichtigungen zu vermeiden
} else if (!eventActive && lastStatus) {
lastStatus = false; // Zurücksetzen des Status
}
})
.catch(err => {
console.error('Fehler beim Abrufen der API:', err);
});
}, interval * 1000);
|