Ein PHP-Skript um einen Kryptowährungspreis
in Discord darzustellen.
Installation Windows
Voraussetzungen
- Docker vollständig installiert
- Discord und einen Webhook
- Konsole/Terminal nach Wahl (PowerShell, CMD, etc.)
- Rapid API Key
Docker Container
Nach dem Download und entzippen muss man den Docker-Container ausführen installieren und starten. Dazu öffnest du eine Konsole/Terminal deine Wahl.
Navigiere dann in den Projektordner und gib folgenden Befehl ein:
docker-compose -f "docker-compose.yml" up -d --build
Die Installation sollte automatisch beginnen.
Wenn die Installation erfolgreich abgeschlossen wurde, kannst du im Terminal diesen Befehl eingeben:
docker exec -it phpdev /bin/bash
Du solltest dich dann in der Linux Bash im Ordner /opt/code
landen. Zuletzt musst du nur noch
php index.php
eingeben. Dann wird die Applikation samt Setup ausgeführt. Wie du durch das Setup navigierst, findest du hier.
Installation Linux
Voraussetzungen
- PHP vollständig installiert
- Discord und einen Webhook
- Linux Shell
- Rapid API Key
Ausführung
Um die Applikation in Linux zu starten, musst du erstmals in das Projektverzeichnis in der Shell navigieren. Dort gehst du in den Ordner code/
mit
cd code/
Folgend startest du nur noch die index.php
Datei mit:
php index.php
Das war es bereits! Führe nun hier fort.
Allgemeines Setup
Rapid API Key
Für die Rapid API, die mit der Twelvedata API verknüpft ist, braucht man den RapidAPI Key. Dazu erstellst du dir einen Account. Nachdem navigierst du zu Pricing und musst dort erstmals den Account für den Plan auswählen. Dann abonnierst du den Basic Plan (dieser ist gratis). Nun sollte für dich der API-Key funktionieren, den du unter "Endpoints" findest. (Dieser ist mit X-RapidAPI-Key
unter der Kategorie Exchanges
beschriftet.)
Setup Discoin Applikation
Wenn das index.php
gestartet wurde und die Datei .env
noch nicht existiert, wird nach folgenden Fragen gefragt.
Bitte gib die Webhook URL ein:
https://discord.com/api/webhooks/XXXXXXXXXXXXX/XXXXXXXXXXXXXXXXX
Hier bitten wir dich die URL des Discord Webhooks einzugeben.
Hoffentlich hast du bereits im Voraus deinen Rapid API Key generieren lassen und diesen bereits kopiert. Er sollte bei der nächsten Frage eingegeben werden, um Abfragen des Bitcoin Wertes zu machen.
Bitte gib den Rapid-API Key ein:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Wenn du den Webhook noch nie konfiguriert für einen Channel konfiguriert hast, musst du (falls vorhanden) die generierte .env
Datei löschen und das Skript erneut ausführen. So werden alle Fragen erneut gefragt. Wichtig ist dabei diese Frage:
Wie lautet die MessageID der gesendeten Nachricht?:
XXXXXXXXXXXXXXXXXX
Um die ID herauszufinden musst du den Developer Mode auf Discord aktiviert haben. Dann klickst du rechts, neben der Nachricht auf die Punkte und wählst Copy ID
aus. Die ID wird dir dann direkt in das Clipboard gespeichert und du kannst mit Rechtsklick diese in die Konsole einfügen.
Währungen
Um die normale Währung zu ändern musst du nach dem Setup den Webhook mit CTRL + C stoppen und in .env
die Werte dazu anpassen (JSON Wert "currency" und "cryptocurrency"). Dort gelten die ISO-4217 Währungskürzel. Für die Cryptowährungen gelten die bekanntesten. Leider gibt es hierfür keine Liste.
Was man ausserdem auch machen kann ist zwei normale Wärhungen miteinander vergleichen, wie zum Beispiel Euro (EUR) mit Schweizer Franken (CHF).
Nun sollte der Webhook im Hintergrund die Nachricht mit den Währungskursen solange aktualisieren, wie das Terminal/Konsole offen bleibt.
Viel Spass
Informationen zum Projekt
Projektidee mit Zusammenfassung
Dies ist das Projekt der Kalenderwoche 41 im ZLI in Zürich. Der Auftrag ist es etwas mit einer API zu machen und im Team zu arbeiten.
Unsere Projektidee ist einen Webhook auf Discord in einem Server zu erstellen, der alle paar Sekunden von der Coinbase API den bevorzugten Cryptowährungspreis (zum Beispiel Bitcoin) abruft und ausgibt. Der Webhook schickt bei der Ausführung einmal eine Nachricht mit einem sogennanten Discord Embed, das den aktuellen Preis mit eventuell einem Verlauf anzeigt. Der Preis sollte dann automatisch, solange die PHP Session bestehen (Konsole geöffnet) bleibt, jede 1-2 Minuten aktualisiert werden (indem die Nachricht editiert wird).
APIs
Wir möchten die Discord Webhook API für unser Projekt benutzen, die sehr gut dokumentiert und nicht all zu leicht ist. Dort können wir unsere Applikation (Coinbase API) mit Discord verknüpfen.
Um den zurzeitigen Preis der Währung zu bekommen wollten wir zuerst die Coinbase API benutzen, jedoch brauchte man dafür einen Token, der man nur mit einer gültigen ID bekommt, wenn man über 18 Jahre alt ist. Marc suchte dann kurz nach einer neuen. Die neue heisst Rapid API (funktioniert mit Twelvedata) und hat eine maximale Requestrate von 800/Tag, was ausreicht bei Einer Abfrage pro Zwei Minuten.
Docker Container
Um PHP einfacher benutzen zu können benutzen wir den Container von foxfabi. So ist nachher, wenn man das Projekt herunterlädt, gleich alles funktionstüchtig und auf der neusten Version.
SMART Ziele
- Funktionierende Discord Webhook Applikation mit PHP das Nachrichten in einem Channel sendet und diese mit verschiedenen Intervals editiert bis Ende Woche erarbeiten.
- Die Coinbase API mit der Discord Webhook Applikation verknüpfen.
- Verstehen der Discord Webhook API.
- Das Scrum Model anwenden.
- Einen guten Teamgeist und Teamarbeit haben.
Teammitglieder und User Stories
- Noah Geeler (API-1)
- Als Entwickler dieses Projektes möchte ich ein funktionsfähiges Programm mit integrierten APIs erstellen.
- Als Benutzer der Applikation möchte ich eine möglichst einfache Installation haben.
- Als Betrachter des Projektes will ich eine gute Übersicht und Navigation besitzen.
- Marc Willhelm (API-1)
- Als Entwickler möchte ich ein möglichst "cleanes", vertsändliches Produkt abliefern, damit es jeder verstehen kann.
- Als Benutzer möchte ich mühelos Updates über den Cryptomarkt haben, damit ich immer auf dem neusten Stand bleibe.
Team Kodex
- Ehrlichkeit hat hier oberste Priorität.
- Man steht zu seinen Fehlern.
- Sauber und sorgfältig arbeiten.
- Spass haben.
- Oft COMMITTEN.