Zurück zum Blog
HermesDiscordTroubleshootingAI Agents

Hermes Agent auf Discord antwortet nicht: Lösungen

Ihr Hermes-Agent-Bot auf Discord ist online, aber stumm? Die vier Ursachen hinter fast jedem Fall und die genaue Lösung für jede.

Von Hermify Team||6 Min. Lesezeit
Dunkle Seitenleiste eines Discord-Servers mit einem Hermes-Agent-Bot, der mit grünem Punkt online ist, und ohne Antwort im Kanal darunter

Ihr Bot ist online und ignoriert Sie

Der grüne Punkt leuchtet. Der Bot steht in der Mitgliederliste Ihres Servers. Sie erwähnen ihn per @, senden einen Slash-Command, tippen eine normale Nachricht, und nichts kommt zurück. Kein Fehler in den Logs, keine Antwort im Kanal. Discord zeigt den Bot als aktiv an, und Hermes Agent zeigt das Gateway als verbunden.

Fast jeder Fall, den wir sehen, lässt sich auf eine von vier Ursachen zurückführen. Drei davon scheitern absichtlich still, weshalb der Bot gesund aussieht, während er nichts tut. Dieser Beitrag geht jede Ursache durch, zeigt, wie Sie bestätigen, dass es Ihre ist, und die genaue Lösung.

Ursache 1: Der Message Content Intent ist deaktiviert

Das ist die häufigste Ursache dafür, dass ein Discord-Bot sich verbindet und dann jede normale Nachricht ignoriert. Symptom: Ihre Slash-Commands funktionieren, aber es passiert nichts, wenn Sie eine normale Nachricht oder Antwort schreiben. In den Logs sehen Sie MESSAGE_CREATE-Events eintreffen, aber das Feld content ist leer.

Was passiert: Message Content ist ein privilegierter Gateway-Intent. Discord liefert ihn standardmäßig deaktiviert aus. Ohne ihn empfängt Ihr Bot jedes Nachrichten-Event, darf den Text aber nicht sehen, sodass jeder Handler, der auf Schlüsselwort, Erwähnung oder Präfix matched, still scheitert.

Die Lösung: Öffnen Sie das Discord Developer Portal, wählen Sie Ihre Anwendung, gehen Sie in der Seitenleiste zu Bot, scrollen Sie zu Privileged Gateway Intents und schalten Sie Message Content Intent ein. Speichern.

Für Bots in weniger als 100 Servern ist keine Freigabe nötig, der Toggle wird sofort wirksam. Über 100 Servern müssen Sie die App zur Verifikation einreichen und Discord genehmigt den Intent separat.

Sie müssen Hermes Agent nach dem Umschalten nicht neu starten. Die nächste eingehende Nachricht kommt bereits mit gefülltem content-Feld an.

Ursache 2: Sie haben die falsche Anwendung eingeladen

Diese tut weh, weil auf den ersten Blick alles korrekt aussieht. Es gibt einen Bot in Ihrem Server, er ist online, und er hat das richtige Avatar. Aber egal, was Sie tippen, er antwortet nie.

Was passiert: Sie haben wahrscheinlich beim Einrichten mehrere Discord-Anwendungen erstellt (eine Test-App, die echte, eine umbenannte), und die von Ihnen genutzte Einladungs-URL zeigt auf eine andere Anwendung als die, deren Token Hermes Agent verwendet. Discord verbindet beide Apps klaglos mit dem Gateway, beide erscheinen online, aber nur die App, deren Token Sie besitzen, empfängt Events aus Ihrem Server, und wenn diese App nicht eingeladen ist, empfängt sie gar nichts.

Zuerst prüfen: Öffnen Sie im Developer Portal die Anwendung, deren Token in Ihrer Hermes-Agent-.env steht, und kopieren Sie die Application ID aus General Information. Dann klicken Sie in Ihrem Discord-Server mit rechts auf den Bot in der Mitgliederliste und wählen Benutzer-ID kopieren. Stimmen die beiden IDs nicht überein, haben Sie eine andere App eingeladen.

Die Lösung: Erzeugen Sie die OAuth2-Einladungs-URL für die richtige Anwendung neu (die genauen Scopes stehen in Ursache 3), werfen Sie den falschen Bot aus Ihrem Server und laden Sie den richtigen ein. Bestätigen Sie, dass die IDs übereinstimmen, bevor Sie weitermachen.

Discord Developer Portal mit Application-ID-Feld neben einer Server-Mitgliedskarte, deren User-ID mit der des Bots übereinstimmt

Ursache 3: Die Einladung enthielt bot oder applications.commands nicht

Wenn Ihr Bot im Server erscheint, aber nie Slash-Commands empfängt, oder gar nicht als echter Bot-Benutzer auftaucht, wurde die OAuth2-Einladungs-URL mit den falschen Scopes erzeugt.

Discords OAuth2 verlangt zwei getrennte Scopes für eine vollständige Bot-Installation:

  • bot, das die eingeladene Anwendung erst zu einem Bot-Benutzer im Server macht.
  • applications.commands, das dem Bot erlaubt, Slash-Commands zu registrieren und zu empfangen.

Ohne den ersten installiert Discord die App als Integration statt als Bot-Mitglied, und der Token hat nichts, woran er sich hängen könnte. Ohne den zweiten ist der Bot ein echtes Mitglied, aber Slash-Commands registrieren sich nicht, sodass /irgendwas mit Diese Interaktion ist fehlgeschlagen antwortet oder gar nicht autovervollständigt.

Die Lösung: Gehen Sie im Developer Portal zu OAuth2 in der Seitenleiste, klicken Sie URL Generator, haken Sie in der Scopes-Sektion sowohl bot als auch applications.commands an und markieren Sie im darunter erscheinenden Bot-Permissions-Panel mindestens:

  • Send Messages
  • Read Message History
  • Embed Links
  • Attach Files
  • Use Slash Commands

Kopieren Sie die unten erzeugte URL, öffnen Sie sie im Browser, wählen Sie Ihren Server und bestätigen Sie. Eine minimale gültige URL sieht so aus:

https://discord.com/oauth2/authorize?client_id=<APPLICATION_ID>&scope=bot+applications.commands&permissions=277562616896

Wenn Ihr Bot für TTS-Antworten Voice-Kanäle betreten soll, haken Sie außerdem Connect und Speak im Permissions-Raster an und laden Sie neu ein. Discord aktualisiert die bestehende Mitgliedschaft, statt eine Kopie anzulegen.

Ursache 4: Der Kanal verweigert die Rolle des Bots

Server-weite Rechte sind nur die halbe Geschichte. Discord legt Kanal- und Kategorie-Overrides über die Rollenrechte, und ein einziger deny auf Kanalebene bei Send Messages oder Read Message History bringt einen Bot zum Schweigen, der im Rest des Servers funktioniert.

Symptom: Ihr Bot antwortet in manchen Kanälen, in anderen nicht. Oder der Bot ist in jedem Kanal stumm, aber nur in diesem Server, obwohl derselbe Bot in Ihrem Testserver funktioniert.

Was passiert: Kanal-Overrides schlagen Rollenrechte. Wenn jemand auf Ihrem Server Send Messages für @everyone auf diesem Kanal verboten oder auf eine Rolle beschränkt hat, die Ihr Bot nicht trägt, kann Ihr Bot dort nicht posten, auch wenn er Send Messages server-weit hat. Read Message History ist ein anderer Permission als View Channel, sodass ein Bot eine neue Nachricht eintreffen sehen und trotzdem nicht antworten kann, wenn Historie verweigert ist, weil einige Hermes-Agent-Skills vor der Antwort jüngeren Kontext lesen.

Zuerst prüfen: Rechtsklick auf den betroffenen Kanal, Kanal bearbeiten, Berechtigungen, und sehen Sie sich die Rolle Ihres Bots an (oder @everyone, wenn der Bot keine Rolle zugewiesen bekommen hat). Suchen Sie ein rotes X bei einem der folgenden: View Channel, Send Messages, Read Message History, Send Messages in Threads, Use Application Commands.

Die Lösung: Entweder ein explizites für die Rolle des Bots auf dem betroffenen Kanal hinzufügen oder den Deny auf Kategorieebene entfernen (Kategorie-Denies fallen auf jeden Kanal darin). Wenn Ihr Bot innerhalb von Threads antworten soll, ist Send Messages in Threads ein eigener Permission und braucht seine eigene Zuweisung. Der Discord-Support-Thread zu Kanal-Overrides hat die vollständigen Präzedenzregeln.

Discord-Kanalberechtigungspanel mit einer Bot-Rolle und grünen Häkchen bei Send Messages und Read Message History

Diagnosereihenfolge, die Zeit spart

Wenn ein Bot verstummt, gehen Sie die Ursachen in dieser Reihenfolge durch, statt zur auffälligsten Lösung zu springen:

  1. Vergleichen Sie Application ID und User ID des Bots. Sechzig Sekunden, fängt den Fall der falschen App, bevor Sie irgendetwas anderes anfassen.
  2. Prüfen Sie den Message Content Intent. Sechzig Sekunden im Developer Portal, löst den größten Anteil stummer Bots mit einem Toggle.
  3. Sehen Sie sich Ihre eingehenden Events an. Wenn Sie Hermes Agent mit HERMES_LOG_LEVEL=debug fahren, sehen Sie, ob der Bot Events überhaupt empfängt und ob das content-Feld leer ist.
  4. Prüfen Sie die Einladungsscopes erneut. Sind Slash-Commands das Symptom, ist das fast immer die Antwort. Erneut einladen mit beiden Scopes angehakt.
  5. Auditieren Sie die Kanal-Overrides. Lohnt erst, wenn die ersten vier ausgeschlossen sind, weil das Prüfen am längsten dauert und diese Ursache am wenigsten wahrscheinlich ist, wenn der Bot überall stumm ist.

Den vollständigen Discord-Erstinstallationspfad finden Sie in der Hermes-Agent-Discord-Setup-Anleitung. Wenn Ihr Bot sich gar nicht mit Discord verbindet (statt zu verbinden und dann stumm zu bleiben), deckt der Beitrag Hermes Agent Docker container keeps restarting Gateway-Crash-Loops ab.

Wenn Sie sich nicht wöchentlich mit Discord streiten wollen

Discords Intents, das Scope-Modell und die Override-Matrix pro Kanal sind, wie sie sind. Wenn für Sie ein einfacher Konversationsagent keinen OAuth-Flow und keine Prüfung eines privilegierten Intents brauchen sollte, um Hallo zu sagen, starten Sie mit Hermify. Hermify betreibt einen verwalteten Hermes Agent auf Telegram mit derselben Erinnerung und denselben Skills, in etwa einer Minute live, ohne Gateway-Konfiguration, die betreut werden muss.

Quellen

Betreiben Sie Ihren eigenen Hermes Agent

Bringen Sie Ihren API-Schlüssel mit, verbinden Sie Telegram und erhalten Sie in 60 Sekunden einen selbstlernenden KI-Agenten.

Loslegen