n8n Discord AI Chatbot

Projektbeschreibung

In diesem Projekt habe ich einen Discord-Chatbot entwickelt, der lokal auf einem Raspberry Pi läuft und über n8n automatisiert wird. Jede Nachricht in einem Discord-Channel triggert einen Workflow, der den Benutzernamen erfasst und mit einer MariaDB-Datenbank abgleicht, in der eine zugeordnete Emotion gespeichert ist (z.B. positiv, wütend, usw.).

Das Gemini-Sprachmodell generiert daraufhin eine Antwort, die inhaltlich zur Nachricht passt und im Ton der gespeicherten Emotion formuliert ist. So entsteht ein personalisierter und stimmungssensibler Dialog – vollständig lokal gehostet und ressourcenschonend umgesetzt.

Eckdaten

Projekt-Typ
Privates Lernprojekt
Technologien
  • n8n
  • MariaDB
  • Discord API
  • Gemini API
  • Docker
  • Raspberry Pi

Der n8n-Workflow

Das Herzstück des Projekts ist der in n8n erstellte Workflow. Dieser lauscht auf neue Nachrichten in einem bestimmten Discord-Channel. Sobald eine Nachricht eingeht, wird sie zusammen mit dem Benutzernamen des Absenders an die Gemini API gesendet, um eine kontextbezogene Antwort zu generieren. Dabei wird auch die Emotion des Benutzers berücksichtigt, die zuvor in einer MariaDB-Datenbank gespeichert wurde.

Wenn ein User mit dem Bot interagiert, dessen Benutzername jedoch noch nicht in der Datenbank vorhanden ist, wird automatisch ein Eintrag mit der Emotion „neutral“ erstellt. So kann der Bot auch auf neue User reagieren, ohne dass eine manuelle Datenbankpflege erforderlich ist.

Das Gemini-Modell hat Zugriff auf ein sogenanntes „Simple Memory“. Dieses speichert den Verlauf der letzten zehn Nachrichten, um den Kontext der Konversation zu speichern. Dadurch kann der Bot kontextbezogene und relevante Antworten geben, die auf den bisherigen Dialogverlauf abgestimmt sind.

Emotionale Anpassung

Die Emotionale Anpassung der Bot-Antworten erfolgt über einen Link der zu einer Art Formsumfrage führt. Hier können die User zwischen drei Aktionen wählen: Profil updaten, Profil erstellen und Profil löschen. Diese Aktionen ermöglichen es den Usern, ihre Emotionen in der Datenbank zu aktualisieren, ein neues Profil zu erstellen oder ihr bestehendes Profil zu löschen.

Jede Emotion ist mit einem spezifischen Tonfall und einer bestimmten Wortwahl verknüpft. Wenn der Bot eine Nachricht generiert, berücksichtigt er die Emotion des Benutzers in seinem Prompt, um eine passende Antwort zu formulieren. Zum Beispiel könnte eine positive Emotion zu einer freundlichen und aufmunternden Antwort führen, während eine wütende Emotion in einem schärferen Tonfall ausgedrückt wird. Diese Anpassung sorgt für ein personalisiertes und emotional abgestimmtes Nutzererlebnis.

Profil updaten

Über einen Link gelangen User zu einem Formular, in dem sie ihre aktuelle Emotion in der Datenbank aktualisieren können. Das Formular dient als Frontend für den Workflow, der die Emotion im Backend in der Datenbank speichert.

Der Workflow prüft, ob der User bereits existiert. Wird der User in der Datenbank gefunden, wird der alte Eintrag durch einen neuen ersetzt.

Profil erstellen

Genau wie beim Profil-Update können User über einen Link "Profil erstellen" wählen. Dabei wird ein neues Profil mit der gewählten Emotion in der Datenbank angelegt.

Um sicherzugehen, dass der eingegebene Username auf dem Discord-Server existiert, prüft der Workflow, ob der User bereits existiert. Dafür werden alle Usernamen des Discord-Servers abgefragt. Sollte der Username nicht existieren, wird der Workflow abgebrochen und eine Fehlermeldung ausgegeben.

Andernfalls wird ein neuer Eintrag mit der ausgewählten Emotion in der Datenbank erstellt. So können neue User schnell und einfach ein Profil anlegen, das sofort für die Bot-Interaktion genutzt werden kann.

Profil löschen

User können ihr Profil über einen Link löschen. Der Workflow prüft, ob der User in der Datenbank existiert. Wenn ja, wird der Eintrag gelöscht.

Dies ermöglicht es Usern, ihre Daten jederzeit zu entfernen und ihre Privatsphäre zu wahren. Der Workflow bestätigt anschließend, dass das Profil erfolgreich gelöscht wurde.

Technische Umsetzung

Das gesamte Projekt ist auf einem Raspberry Pi 4 zu Hause. Diese Wahl ermöglicht einen stromsparenden 24/7-Betrieb bei voller Kontrolle über die Hardware und die Daten. Um die verschiedenen Dienste – n8n, die MariaDB-Datenbank und weitere Tools – sauber voneinander zu trennen und einfach verwalten zu können, kommt Docker zum Einsatz.

n8n bildet als Open-Source-Tool das Gehirn des Chatbots. Da die Software bei lokaler Installation (Self-Hosting) kostenlos ist, stellt sie eine ideale und kosteneffiziente Lösung für dieses Projekt dar. Es läuft in einem eigenen Docker-Container und dient als zentrale Schnittstelle, die alle Fäden zusammenführt: Es empfängt die Trigger von der Discord API, fragt die Emotionen aus der MariaDB-Datenbank ab, formuliert die Prompts für die Gemini API und sendet die generierte Antwort zurück an den Discord-Channel.

Zurück zur Startseite