💡 So erkennt der DonationTrain deine Spende

Der DonationTrain erkennt Spenden ausschließlich anhand der **Chat-Nachrichten** deiner Bots/Plattformen.  
Die Regeln dafür stehen in der Datei:

- `config/donationTrigger.json`

Jeder Eintrag beschreibt:

- **source** – Twitch-Name des Bots oder Accounts, der die Nachricht schreibt  
- **example** – Beispielsatz, wie die Spendenmeldung im Chat aussieht

Beispiele:

- `"source": "streamelements", "example": "<user> spendet <currency><amount>"`
- `"source": "kofistreambot", "example": "Neue Spende von <user> mit <amount> €"`   


Platzhalter

Im `example`-Text kannst du Platzhalter verwenden.  
Wichtige Platzhalter (inkl. Synonyme):

- **user**  
  `<user>`, `<name>`, `<username>`, `<from_name>`
- **amount**  
  `<amount>`, `<value>`, `<donation>`
- **currency**  
  `<currency>`, `<curr>`
- **message**  
  `<message>`, `<text>`

Die Klammern sind flexibel – spitze `< >` oder geschweifte `{ }` funktionieren gleichermaßen.  
Zwischen den Platzhaltern darf normaler Text, Emojis und zusätzliche Deko stehen; der Parser ist darauf ausgelegt, das zu tolerieren.
Es gelten hier die Platzhalter von der Spendenplattform, die du verwenden möchtest.


Beträge und Währungen

Der DonationTrain-Parser akzeptiert u. a.:

- `5`, `5.00`, `5,00`
- `1.234,56` oder `1,234.56` (Tausenderpunkt/-komma Varianten)
- Kürzel wie `€`, `EUR` oder kurze Währungsnamen

Der Betrag wird intern in eine Zahl umgerechnet; nur **positive, sinnvolle Beträge** werden akzeptiert.


Validierung des Spendernamens

Damit falsche oder unbrauchbare Namen nicht die Logik zerschießen, wird der erkannte Name bereinigt:

- Trimmen, Normalisieren, Entfernen unsichtbarer Zeichen
- Erkennung leerer oder offensichtlich ungültiger Namen
- Falls nötig, Fallback auf den eigentlichen Sendernamen (den Twitch-Account, von dem die Nachricht kam)

Ungültige Kombinationen aus Name/Betrag werden verworfen und nicht als Spende gezählt.


Ablauf der Erkennung

1. Die Quelle (Twitch-Name des Bots) wird mit `source` verglichen.
2. Für alle passenden Einträge wird ein Regex aus dem `example`-Text erzeugt.
3. Passt die Chat-Nachricht zu einem der Regex, werden Name, Betrag und Währung extrahiert.
4. Nach erfolgreicher Validierung wird die Spende an die Start-/Level-Logik übergeben.

So kannst du jede Plattform anbinden, die eine halbwegs konstante Nachricht im Chat ausgibt – indem du nur **`donationTrigger.json`** anpasst, ohne Scriptänderung.