README.md aktualisiert
This commit is contained in:
307
README.md
307
README.md
@@ -1,2 +1,307 @@
|
|||||||
# SpigotWatch
|
# 🐍 SpigotWatch
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
**Ein Discord-Bot zum automatischen Überwachen von SpigotMC Plugin-Updates.**
|
||||||
|
Erhalte sofortige Benachrichtigungen wenn deine Plugins ein Update bekommen – direkt in deinen Discord-Kanal.
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✨ Features
|
||||||
|
|
||||||
|
- 🔔 **Automatische Update-Benachrichtigungen** – Überwacht SpigotMC Plugins und postet Updates in einen definierten Kanal
|
||||||
|
- 📋 **Alle eigenen Plugins auf einmal hinzufügen** – `addauthor` fügt alle Plugins eines Autors mit einem Befehl hinzu
|
||||||
|
- 🔍 **Plugin-Suche & Details** – Suche nach Plugins, vergleiche sie und prüfe Minecraft-Kompatibilität
|
||||||
|
- ⚙️ **Vollständig konfigurierbar** – Intervall, Sprache, Mention-Rolle und Update-Kanal pro Server einstellbar
|
||||||
|
- 🌐 **Mehrsprachig** – Deutsch und Englisch unterstützt (`vn!setlang en`)
|
||||||
|
- ⚡ **Slash Commands** – Alle Befehle als `/befehl` und `vn!befehl` verfügbar
|
||||||
|
- 📊 **Statistiken & Status** – Live-Übersicht über API-Status, Queue und Update-Historie
|
||||||
|
- 🔒 **Token-Schutz** – Sicheres `.env`-System, kein Token im Code
|
||||||
|
- 🚦 **Rate-Limit-Schutz** – Queue-System verhindert API-Blockierungen
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 Voraussetzungen
|
||||||
|
|
||||||
|
- [Node.js](https://nodejs.org/) `>= 18.0.0`
|
||||||
|
- [npm](https://www.npmjs.com/)
|
||||||
|
- Ein [Discord Bot Account](https://discord.com/developers/applications)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Installation
|
||||||
|
|
||||||
|
### 1. Repository klonen
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/M-Viper/pluginbot.git
|
||||||
|
cd pluginbot
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Abhängigkeiten installieren
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. `.env` Datei erstellen
|
||||||
|
|
||||||
|
Kopiere die Vorlage und fülle sie aus:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp .env.example .env
|
||||||
|
```
|
||||||
|
|
||||||
|
Öffne `.env` und trage deine Werte ein:
|
||||||
|
|
||||||
|
```env
|
||||||
|
DISCORD_TOKEN=dein_bot_token_hier
|
||||||
|
OWNER_ID=deine_discord_user_id
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Token holen:** [Discord Developer Portal](https://discord.com/developers/applications) → Deine App → Bot → Token kopieren
|
||||||
|
> **User-ID holen:** Discord → Einstellungen → Erweitert → Entwicklermodus aktivieren → Rechtsklick auf dich selbst → ID kopieren
|
||||||
|
|
||||||
|
### 4. `config.json` anpassen
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"prefix": "vn!",
|
||||||
|
"botName": "Viper-Network",
|
||||||
|
"authorName": "DeinName",
|
||||||
|
"authorGithub": "https://deine-website.de",
|
||||||
|
"inviteClientID": "DEINE_BOT_CLIENT_ID"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Client-ID holen:** [Discord Developer Portal](https://discord.com/developers/applications) → Deine App → OAuth2 → Client ID
|
||||||
|
|
||||||
|
### 5. Slash-Befehle registrieren
|
||||||
|
|
||||||
|
```bash
|
||||||
|
node deploy.js
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6. Bot starten
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm start
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 Autostart mit PM2 (empfohlen)
|
||||||
|
|
||||||
|
Damit der Bot bei einem Absturz automatisch neu startet:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install -g pm2
|
||||||
|
pm2 start index.js --name pluginbot
|
||||||
|
pm2 save
|
||||||
|
pm2 startup
|
||||||
|
```
|
||||||
|
|
||||||
|
Nützliche PM2-Befehle:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pm2 status # Status anzeigen
|
||||||
|
pm2 logs pluginbot # Logs anzeigen
|
||||||
|
pm2 restart pluginbot
|
||||||
|
pm2 stop pluginbot
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📁 Projektstruktur
|
||||||
|
|
||||||
|
```
|
||||||
|
pluginbot/
|
||||||
|
│
|
||||||
|
├── index.js # Einstiegspunkt
|
||||||
|
├── deploy.js # Slash-Befehle registrieren (einmalig)
|
||||||
|
├── config.json # Bot-Konfiguration
|
||||||
|
├── .env # Token & Owner-ID (nicht auf GitHub!)
|
||||||
|
├── .env.example # Vorlage für .env
|
||||||
|
├── .gitignore
|
||||||
|
│
|
||||||
|
├── commands/ # Alle Bot-Befehle
|
||||||
|
│ ├── add.js
|
||||||
|
│ ├── addauthor.js
|
||||||
|
│ ├── changelog.js
|
||||||
|
│ ├── check.js
|
||||||
|
│ ├── compare.js
|
||||||
|
│ ├── help.js
|
||||||
|
│ ├── info.js
|
||||||
|
│ ├── invite.js
|
||||||
|
│ ├── list.js
|
||||||
|
│ ├── ping.js
|
||||||
|
│ ├── plugin.js
|
||||||
|
│ ├── remove.js
|
||||||
|
│ ├── search.js
|
||||||
|
│ ├── setchannel.js
|
||||||
|
│ ├── setinterval.js
|
||||||
|
│ ├── setlang.js
|
||||||
|
│ ├── setmention.js
|
||||||
|
│ ├── stats.js
|
||||||
|
│ ├── status.js
|
||||||
|
│ ├── top.js
|
||||||
|
│ └── update.js
|
||||||
|
│
|
||||||
|
├── events/ # Discord-Events
|
||||||
|
│ ├── botping.js
|
||||||
|
│ ├── interactionCreate.js
|
||||||
|
│ ├── message.js
|
||||||
|
│ └── ready.js
|
||||||
|
│
|
||||||
|
├── util/ # Hilfsfunktionen
|
||||||
|
│ ├── helpers.js # Spiget URL-Generatoren
|
||||||
|
│ ├── i18n.js # Übersetzungen DE/EN
|
||||||
|
│ ├── logger.js # Winston Logger
|
||||||
|
│ ├── ownerOnly.js # Owner-Check
|
||||||
|
│ ├── queue.js # Update-Check Queue
|
||||||
|
│ └── stats.js # Statistiken
|
||||||
|
│
|
||||||
|
├── serverdata/ # Serverdaten (automatisch angelegt)
|
||||||
|
└── data/ # Bot-Statistiken (automatisch angelegt)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎮 Befehle
|
||||||
|
|
||||||
|
### ℹ️ Allgemein
|
||||||
|
|
||||||
|
| Befehl | Beschreibung |
|
||||||
|
|--------|--------------|
|
||||||
|
| `vn!help [befehl]` | Alle Befehle oder Details zu einem bestimmten |
|
||||||
|
| `vn!info` | Bot-Informationen, Version, RAM, Laufzeit |
|
||||||
|
| `vn!stats` | Nutzer, Server, Kanäle, Befehle, Laufzeit |
|
||||||
|
|
||||||
|
### 🔍 Plugins
|
||||||
|
|
||||||
|
| Befehl | Beschreibung |
|
||||||
|
|--------|--------------|
|
||||||
|
| `vn!search [name]` | Top 5 Plugins suchen, sortiert nach Downloads |
|
||||||
|
| `vn!search [name] -r` | Suche sortiert nach Bewertung |
|
||||||
|
| `vn!search [name] -n 500` | Suchmenge anpassen |
|
||||||
|
| `vn!plugin [id]` | Details zu einem Plugin anzeigen |
|
||||||
|
| `vn!changelog [id] [anzahl]` | Letzten 1–10 Updates eines Plugins |
|
||||||
|
| `vn!check [id] [mc-version]` | Minecraft-Kompatibilität prüfen |
|
||||||
|
| `vn!compare [id1] [id2]` | Zwei Plugins nebeneinander vergleichen |
|
||||||
|
| `vn!top` | Top beobachtete Plugins nach Downloads |
|
||||||
|
| `vn!top -r` | Top beobachtete Plugins nach Bewertung |
|
||||||
|
|
||||||
|
### 👁️ Update-Watcher *(nur Admins)*
|
||||||
|
|
||||||
|
| Befehl | Beschreibung |
|
||||||
|
|--------|--------------|
|
||||||
|
| `vn!add [id] [#kanal]` | Plugin beobachten (mit ✅/❌ Bestätigung) |
|
||||||
|
| `vn!addauthor [autor_id] [#kanal]` | Alle Plugins eines Autors auf einmal hinzufügen |
|
||||||
|
| `vn!remove [id]` | Plugin nicht mehr beobachten |
|
||||||
|
| `vn!list` | Alle beobachteten Plugins dieses Servers |
|
||||||
|
| `vn!update [id]` | Manuellen Update-Check auslösen |
|
||||||
|
| `vn!setchannel [id] [#kanal]` | Update-Kanal für ein Plugin ändern |
|
||||||
|
| `vn!setmention [id] [@rolle]` | Rolle die bei Updates gepingt wird |
|
||||||
|
|
||||||
|
### ⚙️ Konfiguration *(nur Admins)*
|
||||||
|
|
||||||
|
| Befehl | Beschreibung |
|
||||||
|
|--------|--------------|
|
||||||
|
| `vn!setlang [de\|en]` | Sprache des Bots für diesen Server |
|
||||||
|
| `vn!setinterval [minuten]` | Update-Check-Intervall (1–60 Min) |
|
||||||
|
|
||||||
|
### 🔒 Owner-Only
|
||||||
|
|
||||||
|
| Befehl | Beschreibung |
|
||||||
|
|--------|--------------|
|
||||||
|
| `vn!status` | API-Status, Queue-Info und Statistiken |
|
||||||
|
| `vn!ping` | Bot-Latenz anzeigen |
|
||||||
|
| `vn!invite` | Einladungslink des Bots |
|
||||||
|
|
||||||
|
> Alle Befehle sind auch als Slash-Commands verfügbar: `/add`, `/search`, `/status` usw.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚙️ Konfiguration
|
||||||
|
|
||||||
|
### Update-Intervall pro Server
|
||||||
|
|
||||||
|
Standardmäßig prüft der Bot alle **5 Minuten** auf Updates. Anpassbar per Server:
|
||||||
|
|
||||||
|
```
|
||||||
|
vn!setinterval 10
|
||||||
|
```
|
||||||
|
|
||||||
|
### Mention-Rolle bei Updates
|
||||||
|
|
||||||
|
Eine Rolle die bei jedem Update automatisch gepingt wird:
|
||||||
|
|
||||||
|
```
|
||||||
|
vn!setmention 72678 @Plugin-Updates
|
||||||
|
```
|
||||||
|
|
||||||
|
Mention entfernen:
|
||||||
|
|
||||||
|
```
|
||||||
|
vn!setmention 72678
|
||||||
|
```
|
||||||
|
|
||||||
|
### Sprache
|
||||||
|
|
||||||
|
```
|
||||||
|
vn!setlang en # Englisch
|
||||||
|
vn!setlang de # Deutsch (Standard)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔗 Ressourcen-ID finden
|
||||||
|
|
||||||
|
Die **Ressourcen-ID** eines SpigotMC Plugins findest du in der URL:
|
||||||
|
|
||||||
|
```
|
||||||
|
https://www.spigotmc.org/resources/vault.34315/
|
||||||
|
^^^^^
|
||||||
|
Ressourcen-ID = 34315
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📦 Abhängigkeiten
|
||||||
|
|
||||||
|
| Paket | Version | Zweck |
|
||||||
|
|-------|---------|-------|
|
||||||
|
| [discord.js](https://discord.js.org/) | ^14.15.3 | Discord API |
|
||||||
|
| [spiget](https://www.npmjs.com/package/spiget) | 0.1.3 | SpigotMC API |
|
||||||
|
| [dotenv](https://www.npmjs.com/package/dotenv) | ^16.4.5 | Umgebungsvariablen |
|
||||||
|
| [winston](https://www.npmjs.com/package/winston) | ^3.13.0 | Logging |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛡️ Sicherheit
|
||||||
|
|
||||||
|
- Der Bot-Token wird ausschließlich in der `.env` Datei gespeichert
|
||||||
|
- Die `.env` Datei ist in `.gitignore` eingetragen und wird **niemals** auf GitHub hochgeladen
|
||||||
|
- `serverdata/` und `data/` sind ebenfalls in `.gitignore` – keine Serverdaten auf GitHub
|
||||||
|
- Owner-only Befehle (`status`, `ping`, `setinterval`) können nur vom konfigurierten Owner genutzt werden
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📄 Lizenz
|
||||||
|
|
||||||
|
Dieses Projekt steht unter der [GPL-3.0 Lizenz](LICENSE).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
Entwickelt von **[M_Viper](https://m-viper.de)**
|
||||||
|
|
||||||
|
</div>
|
||||||
Reference in New Issue
Block a user