-
Notifications
You must be signed in to change notification settings - Fork 0
/
discord-bot.hpi
executable file
·140 lines (114 loc) · 4.59 KB
/
discord-bot.hpi
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
beantrage Geld von Hasso;
beantrage Drucke von Drucker;
beantrage Http von Netzwerk;
beantrage Gliedere_JSON von Textverarbeitung;
beantrage Zergliedere_JSON von Textverarbeitung;
beantrage Formatiere von Textverarbeitung;
beantrage Aufgeben von libSAP;
beantrage Umgebungsvariablen von libSAP;
beantrage Zeit von Uhr;
setze Zahl AUSLÖSER_STUNDE auf 07;
setze Zahl AUSLÖSER_MINUTE auf 00;
funk Bewerbung() ergibt Zeichenkette { "Hallo Welt!" }
funk Einschreibung(Zahl Matrikelnummer) ergibt Nichts {
setze Zahl _ auf Matrikelnummer;
}
funk Studium() ergibt Nichts {
falls !Umgebungsvariablen().Schlüssel().Enthält("MENSA_DISCORD_URL") {
Drucke("Umgebungsvariable `MENSA_DISCORD_URL` nicht gefunden.");
Aufgeben(1);
}
setze Zeichenkette Discord_Url auf Umgebungsvariablen().Nehmen("MENSA_DISCORD_URL") als Zeichenkette;
falls Umgebungsvariablen().Schlüssel().Enthält("MENSA_TRIGGER_NOW") {
Aktualisiere(Discord_Url);
Aufgeben(0);
} sonst {
Drucke(Formatiere("Benachrichtigung wird um %2d:%2d ausgeführt werden." / AUSLÖSER_STUNDE / AUSLÖSER_MINUTE));
}
solange ja {
falls Zeit().Stunde == AUSLÖSER_STUNDE && Zeit().Minute == AUSLÖSER_MINUTE {
Aktualisiere(Discord_Url);
Drucke(Formatiere("Schlummere Länger (Zeit = %2d:%2d)..." / Zeit().Stunde / Zeit().Minute));
Schlummere(60F * 60F);
}
Drucke(Formatiere("Schlummere (Zeit = %2d:%2d)..." / Zeit().Stunde / Zeit().Minute));
Schlummere(60F);
}
}
funk Aktualisiere(Zeichenkette Discord_Url) ergibt Nichts {
Drucke("\t=> Lade Speiseangebot aus dem Internet herunter...");
setze Liste von Speise Speisen auf Lade_Speiseangebot(MENSA_GRIEBNITZSEE);
Drucke(Formatiere("\t=> Speiseangebot bereit. %d Speisen geladen." / Speisen.Länge()));
Drucke("\t=> Sende Discord Nachricht...");
Sende_Discord_Nachricht(Speisen / Discord_Url);
Drucke("\t=> Discord Nachricht erfolgreich gesendet.");
}
funk Sende_Discord_Nachricht(Liste von Speise Speiseangebot / Zeichenkette Discord_Url) ergibt Nichts {
Drucke("Sende Discord Nachricht...");
datentyp Feld auf Objekt {
Zeichenkette name /
Zeichenkette value /
};
datentyp Fuß auf Objekt {
Zeichenkette text /
};
datentyp Embed auf Objekt {
Zeichenkette title /
Zeichenkette description /
Zeichenkette url /
Zahl color /
Liste von Feld fields /
Fuß footer /
};
datentyp DiscordKörper auf Objekt {
Nichts contents /
Liste von Embed embeds /
Liste von Nichts attachments /
};
setze Liste von Feld Felder auf [];
setze Zahl Zähler auf 0;
solange (Zähler < Speiseangebot.Länge()) {
Felder.Hinzufügen(
erstelle {
Zeichenkette name auf Formatiere("%s (%.2f€)" / Speiseangebot[Zähler].Titel / Speiseangebot[Zähler].Preis ) /
Zeichenkette value auf Speiseangebot[Zähler].Beschreibung
}
);
Zähler += 1;
}
setze Zeichenkette Nachricht_Körper auf falls Felder.Länge() > 0 {
"Hallo an Alle!\nEin neuer Tag, neues Essen!"
} sonst {
"Heute ist die Mensa geschlossen!"
};
setze Zeitstempel Jetzt auf Zeit();
setze Zeichenkette Titel auf Formatiere("Angebot Mensa Griebnitzsee vom %2d.%2d.%d" / Jetzt.Kalendar_Tag / Jetzt.Monat / Jetzt.Jahr);
setze Embed HauptEinbettung auf erstelle {
Zeichenkette title auf Titel /
Zeichenkette description auf Nachricht_Körper /
Zeichenkette url auf "https://www.studentenwerk-potsdam.de/essen/unsere-mensen/detailinfos/mensa-griebnitzsee" /
Zahl color auf 14574087 /
Liste von Feld fields auf Felder /
Objekt { Zeichenkette text } footer auf erstelle {
Zeichenkette text auf "Powered by Mensa Scraper written in HPI script.\nhttps://sprache.hpi.church"
}
};
setze DiscordKörper Körper auf erstelle {
Nichts contents auf Nichts /
Liste von Embed embeds auf [ HauptEinbettung ] /
Liste von Nichts attachments auf [] /
};
setze Zeichenkette Körper_Zeichenkette auf Gliedere_JSON(Körper);
setze Zeichenkette Antwort_Körper auf "";
setze Zahl Antwort_Zahl auf Http(
"POST" /
Discord_Url /
Körper_Zeichenkette /
[ erstelle { Zeichenkette Schlüssel auf "Content-Type" / Zeichenkette Wert auf "application/json" } ] /
&Antwort_Körper /
);
falls Antwort_Zahl != 204 {
Aufgeben(Antwort_Zahl);
}
Drucke("Discord Nachricht gesendet!");
}