Ein Discord-Bot, der Menschen mit dem Weltraum verbindet – mit Echtzeit-ISS-Tracking und dem Astronomy Picture of the Day von der NASA.
- ISS-Tracking — Echtzeit-Position, Geschwindigkeit, Höhe, Land, Stadt, Zeitzone und Kartenlink
- NASA Bild des Tages — Tägliches Astronomiebild mit Titel
- NASA Bild des Tages + Info — Tägliches Astronomiebild mit vollständiger Beschreibung
- Slash-Commands — Moderne Discord-Slash-Befehle
| ISS-Tracking | NASA APOD | NASA APOD + Info |
|---|---|---|
![]() |
![]() |
![]() |
- Java 21+
- Maven 3.8+
- Discord-Bot-Token — Discord Developer Portal
- NASA-API-Key — api.nasa.gov (kostenlos, oder
DEMO_KEYfür eingeschränkten Zugriff) - GeoNames-Benutzername — geonames.org (kostenloses Konto, für Ozean-Erkennung)
git clone https://github.com/jantrw/SpaceLinker.git
cd SpaceLinkerDie Beispielkonfiguration kopieren und API-Schlüssel eintragen:
cp src/main/resources/config.properties.example src/main/resources/config.propertiessrc/main/resources/config.properties bearbeiten:
# NASA API-Key — kostenlos unter https://api.nasa.gov/
apiKeyNasa=DEIN_NASA_API_KEY
# Discord-Bot-Token — unter https://discord.com/developers/applications
botToken=DEIN_DISCORD_BOT_TOKEN
# GeoNames-Benutzername — Registrierung unter https://www.geonames.org/
username=DEIN_GEONAMES_BENUTZERNAMEHinweis:
config.propertiessteht in.gitignoreund wird nicht committed.
- Zum Discord Developer Portal gehen
- New Application klicken → Namen vergeben
- Zu Bot gehen → Add Bot klicken
- Token kopieren und in
config.propertieseintragen (botToken)
DEINE_CLIENT_ID durch die Client-ID der Anwendung ersetzen (unter General Information zu finden):
https://discord.com/oauth2/authorize?client_id=DEINE_CLIENT_ID&scope=bot&permissions=274877991936
Dies gewährt: Nachrichten senden, Links einbetten, Slash-Commands verwenden.
mvn clean package
java -jar target/SpaceLinker-1.0-SNAPSHOT.jarOder direkt mit Maven starten:
mvn compile exec:java -Dexec.mainClass="me.jan_dev.DiscordBot"Beim ersten Start registriert der Bot die Slash-Commands automatisch bei Discord. Bei nachfolgenden Starts wird die Registrierung übersprungen, sofern sich die Commands nicht geändert haben.
| Befehl | Beschreibung |
|---|---|
/iss |
Aktuelle ISS-Position, Geschwindigkeit, Höhe, Standort und Kartenlink |
/picture |
NASA Astronomy Picture of the Day (nur Bild) |
/pictureinfo |
NASA Astronomy Picture of the Day mit vollständiger Beschreibung |
/help |
Zeigt diese Befehlsliste |
src/main/java/
├── me/jan_dev/
│ ├── DiscordBot.java # Einstiegspunkt, Bot-Setup, Command-Registrierung
│ └── BotListener.java # /help Slash-Command-Handler
├── commands/
│ ├── ISSData.java # /iss Befehl — baut das ISS-Embed
│ ├── JSONFetcherIss.java # Holt ISS-Daten von mehreren APIs
│ ├── NasaPictureOfTheDay.java # /picture und /pictureinfo Befehle
│ └── NasaCommandHandler.java # Holt NASA APOD-Daten
└── data/
├── Config.java # Lädt config.properties aus dem Classpath
└── Http.java # Gemeinsame HttpClient-Instanz
| API | Verwendung | Ratenlimit |
|---|---|---|
| Open Notify | ISS-Position | Kein angegebenes Limit |
| Where is the ISS | ISS-Geschwindigkeit, Höhe, Zeitzone | Großzügig |
| Nominatim | Reverse Geocoding (Land, Stadt) | 1 Anfrage/Sekunde |
| GeoNames | Ozean-Erkennung | 1000/Tag (kostenlos) |
| NASA APOD | Astronomy Picture of the Day | 1000/Stunde (mit Key) |
- JDA 5.2.2 — Java Discord API
- Gson 2.10.1 — JSON-Verarbeitung
- SLF4J + slf4j-simple — Logging
MIT License


