Fehler
Jeder Fehlertyp, den die API liefern kann, mit Ursache und Lösung.
Fehlerformat
Jeder Fehler ist JSON mit type, manchmal mit weiteren Feldern:
{ "type": "MissingPermission", "permission": "ManageMessages" }
{ "type": "FailedValidation", "error": "content: length must be between 0 and 2000" }
{ "type": "FileTooLarge", "max": 20000000 }Entscheide nach type, nie nach dem Text. Typen sind stabil: Sie werden nie umbenannt oder entfernt. Neue können in neueren Servern auftauchen, also behandle einen unbekannten Typ wie einen allgemeinen Fehler.
Was tun mit einem Fehler
| Status | Bedeutung | Was zu tun ist |
|---|---|---|
400, 422 | Die Anfrage ist falsch | Korrigiere sie. Dieselbe Anfrage scheitert wieder |
401 | Das Token ist falsch | Stoppe den Bot und prüfe das Token |
403 | Der Bot darf das nicht | Sage es der Person. Nicht wiederholen |
404 | Es ist weg | Vergiss es |
409 | Ein Konflikt | Hole den aktuellen Stand |
429 | Zu viele Anfragen | Siehe Ratenlimits |
5xx | Unsere Seite ist gescheitert | Wiederhole mit wachsender Pause, drei- bis fünfmal |
Fehler des Webservers selbst (kein Token, unbekannte Route, kein JSON im Text) sind ebenfalls JSON. Prüfe den Status, bevor du den Text parst, denn ein Proxy dazwischen kann noch mit HTML antworten.
Ist der Bot auf diesem Server?
Ein Bot sieht nur die Server, auf denen er installiert wurde. Für einen Server, auf dem er nicht ist, unterscheiden sich die Antworten je nach Route:
| Aufruf | Antwort |
|---|---|
GET /servers/{target} | 404 NotFound |
GET /channels/{target} für einen seiner Kanäle | 404 NotFound |
POST /channels/{target}/messages für einen seiner Kanäle | 403 MissingPermission |
Ein 403 MissingPermission beim Schreiben in einen Kanal, dessen ID jemand deinem Bot gegeben hat, kann also heißen, dass der Bot dort nicht installiert ist. Frage GET /channels/{target}: 404 NotFound heißt, der Bot ist nicht auf diesem Server (oder den Kanal gibt es nicht), installiere ihn also zuerst, mit dem Einladungslink aus dem Entwicklerportal. Ein 403 MissingPermission dort heißt, der Bot ist auf dem Server und sieht den Kanal nicht: Ein privater Kanal braucht „Kanal sehen“ für eine der Rollen des Bots.
Fehler, die ein Bot bekommen kann
| Type | HTTP | Ursache | Lösung |
|---|---|---|---|
UnknownUser | 404 | Den Benutzer gibt es nicht, oder der Bot sieht ihn nicht. | Prüfe die ID. Vielleicht wurde das Konto gelöscht. |
DirectMessagesRestricted | 403 | Die Privatsphäre-Einstellungen der Person lehnen diese Direktnachricht ab. | Nicht wiederholen. Schreibe in einem Serverkanal. |
DirectMessagesPaused | 403 | Der Server hat Direktnachrichten unter Mitgliedern pausiert. | Nicht wiederholen. Die Moderation hebt die Pause auf. |
BlockedByOther | 403 | Die Person hat den Bot blockiert. | Nicht wiederholen. |
OfficialAccount | 403 | Einem offiziellen Zrzur-Konto kann man nicht antworten, nicht reagieren, und man kann es weder anpinnen noch melden. | Nicht wiederholen. |
UnknownChannel | 404 | Der Kanal ist weg, oder der Bot sieht ihn nicht. | Prüfe die ID und ob der Bot „Kanal sehen“ hat. |
UnknownMessage | 404 | Die Nachricht ist weg oder nicht in diesem Kanal. | Behandle sie als gelöscht. |
UnknownAttachment | 400 | Eine Datei-ID gibt es nicht, oder sie wurde schon benutzt. | Lade die Datei neu hoch. Jeder Upload geht einmal. |
CannotDeleteMessage | 403 | Die Nachricht lässt sich nicht löschen, etwa weil diese Interaktion sie nicht erstellt hat. | Lösche nur, was dein Bot schrieb, oder hole dir „Nachrichten verwalten“. |
CannotEditMessage | 403 | Ein Bot bearbeitet nur eigene Nachrichten. | Sende eine neue Nachricht. |
CannotJoinCall | 400 | Der Kanal nimmt keine Anrufe an. | Nutze einen Sprachkanal. |
TooManyAttachments | 400 | Die Nachricht hat mehr Dateien als max. | Sende die Dateien in mehreren Nachrichten. |
TooManyEmbeds | 400 | Die Nachricht hat mehr Embeds als max. | Sende weniger Embeds. |
TooManyReplies | 400 | Die Nachricht antwortet auf mehr Nachrichten als max. | Antworte auf weniger Nachrichten. |
TooManyChannels | 400 | Der Server hat sein Kanal-Limit max erreicht. | Lösche zuerst einen Kanal. |
TooManyChannelWebhooks | 400 | Der Kanal hat sein Webhook-Limit erreicht. | Lösche einen Webhook in diesem Kanal. |
TooManyServerWebhooks | 400 | Der Server hat sein Webhook-Limit erreicht. | Lösche einen Webhook auf diesem Server. |
RateLimited | 429 | Ein Webhook hat zu viel gesendet. Der Text hat retry_after in Millisekunden. | Warte so lange und sende dann erneut. |
ForumThreadRequired | 400 | Ein Webhook hat ohne Thread in ein Forum gepostet. | Sende thread_id, oder thread_name für einen neuen Thread. |
ThreadsDisabled | 403 | Der Server hat Threads ausgeschaltet. Was da ist, bleibt lesbar. | Nicht erneut versuchen. Nur der Server kann sie wieder einschalten. |
ForumsDisabled | 403 | Der Server hat Foren ausgeschaltet. Was da ist, bleibt lesbar. | Nicht erneut versuchen. Nur der Server kann sie wieder einschalten. |
PluginsDisabled | 403 | Plugins sind auf diesem Server ausgeschaltet. Solange sie aus sind, antwortet keine Plugin-Route. | Nicht erneut versuchen. Plugins kommen erst zurück, wenn der Server sie einschaltet. |
EmptyMessage | 422 | Die Nachricht hat weder Inhalt noch Embeds, Anhänge oder Komponenten. | Sende etwas. |
PayloadTooLarge | 422 | Die Nachricht ist über einem Größenlimit. | Kürze Text oder Embeds. |
AlreadyPinned | 400 | Die Nachricht ist schon angeheftet. | Ignoriere es. |
NotPinned | 400 | Die Nachricht ist nicht angeheftet. | Ignoriere es. |
InSlowmode | 429 | Der Kanal hat langsamen Modus, und der Bot schrieb zu früh. Der Text hat retry_after. | Warte, oder gib dem Bot „Langsamen Modus umgehen“. Das ist eine Ablehnung, kein Ratenlimit. |
UnknownServer | 404 | Den Server gibt es nicht, oder der Bot ist nicht dort. | Prüfe die ID. Vergiss einen Server bei ServerDelete. |
InvalidRole | 404 | Die Rolle gibt es auf diesem Server nicht. | Hole die Rollen neu. |
Banned | 403 | Dieser Benutzer ist vom Server gebannt. | Die Moderation hebt den Bann zuerst auf. |
AlreadyInServer | 409 | Der Bot ist schon auf diesem Server. | Nichts zu tun. |
CannotTimeoutYourself | 400 | Ziel des Timeouts ist der Bot selbst. | Wähle ein anderes Mitglied. |
TooManyEmoji | 400 | Der Server hat sein Emoji-Limit max erreicht. | Lösche zuerst ein Emoji. |
TooManyRoles | 400 | Der Server hat sein Rollen-Limit max erreicht. | Lösche zuerst eine Rolle. |
UnknownApplication | 404 | Die Anwendung gibt es nicht. | Prüfe die ID: Eine Anwendungs-ID ist die Benutzer-ID des Bots. |
ApplicationNotInstalled | 403 | Jemand hat einen Bot benutzt, der nicht auf diesem Server ist. | Installiere den Bot auf dem Server. |
ApplicationOffline | 503 | Der Bot wurde gesperrt oder abgeschaltet und bekommt nichts mehr. | Seine Eigentümerin wendet sich an den Zrzur-Support. |
SignedDeliveryRejected | 400 | Deine Adresse für HTTP-Interaktionen hat den Test nicht bestanden. reason sagt, warum. | Siehe Interaktionen über HTTP. |
UnknownCommand | 404 | Die Befehls-ID ist unbekannt, oder der Befehl wurde gelöscht. | Hole die Befehlsliste. |
CommandAlreadyExists | 409 | In diesem Bereich gibt es schon einen Befehl mit diesem Namen und Typ. | Ersetze die Liste mit PUT, oder bearbeite den Befehl. |
TooManyCommands | 400 | Das Limit von max Befehlen dieses Typs in einem Bereich ist erreicht. | Lösche zuerst Befehle. |
UnknownInteraction | 404 | Interaktions-ID oder Token sind falsch. | Nutze die Werte aus InteractionCreate unverändert. |
InteractionExpired | 410 | Die 3 Sekunden zum Bestätigen oder die 15 Minuten des Tokens sind vorbei. | Bestätige schneller. Nutze DeferredMessage für langsame Arbeit. |
InteractionAlreadyAcknowledged | 409 | Diese Interaktion hat schon ihre erste Antwort. | Nutze eine Folgenachricht, oder bearbeite das Original. |
TooManyFollowups | 400 | Das Limit von max Folgenachrichten pro Interaktion ist erreicht. | Bearbeite eine Nachricht, oder sende eine normale. |
IsBot | 400 | Diese Route ist für Menschen. Bots werden abgelehnt. | Löse es anders. Die Referenz zeigt, was Bots nutzen können. |
BotIsPrivate | 403 | Nur der Eigentümer installiert einen privaten Bot. | Melde dich als Eigentümer an, oder mache den Bot öffentlich. |
MissingPermission | 403 | Dem Bot fehlt die Berechtigung aus permission. | Gib dem Bot die Berechtigung, oder sage es der Person. |
MissingUserPermission | 403 | Der Person, für die der Bot handelt, fehlt die Berechtigung aus permission. | Sage es der Person. |
MissingIntent | 403 | Route oder Verbindung braucht den Intent aus intent. | Schalte ihn im Entwicklerportal ein und fordere ihn beim Verbinden an. |
MasqueradeNameTaken | 400 | Der Maskenname kopiert ein anderes Mitglied. | Wähle einen anderen Namen. |
BotNeedsVerification | 403 | Ein unbestätigter Bot stoppt bei 100 Servern. | Beantrage die Bestätigung. |
VerificationRequired | 403 | Die Verifizierungsstufe des Servers lehnt dieses Mitglied vorerst ab. requirement sagt, warum. | Warte, oder frage die Moderation. |
AutoModBlocked | 403 | Die AutoMod-Regel rule hat die Nachricht abgelehnt. | Ändere den Text. Wiederhole nicht denselben. |
RulesNotAccepted | 403 | Das Mitglied hat die Serverregeln nicht akzeptiert. | Sage ihm, dass es sie akzeptieren soll. |
InvitesPaused | 403 | Der Server hat Einladungen pausiert. | Nicht wiederholen. Die Moderation hebt die Pause auf. |
NotElevated | 403 | Das Ziel steht gleich hoch oder höher als der Bot, oder die Rolle über seiner höchsten. | Setze die Rolle des Bots höher. |
NotPrivileged | 403 | Der Rang des Bots ist für diese Änderung zu niedrig. | Setze die Rolle des Bots höher. |
CannotGiveMissingPermissions | 403 | Der Bot wollte eine Berechtigung geben, die er selbst nicht hat. | Gib dem Bot die Berechtigung zuerst. |
NotOwner | 403 | Das darf nur der Eigentümer. | Frage den Eigentümer. |
IsElevated | 403 | Das Ziel steht dafür zu hoch. | Wähle ein niedrigeres Ziel. |
InternalError | 500 | Auf dem Server ist etwas schiefgegangen. | Warte und wiederhole mit wachsender Pause. Melde es, wenn es bleibt. |
InvalidOperation | 400 | Die Anfrage passt nicht zum Zustand, etwa Modal als Antwort auf ein Formular. | Prüfe die Regeln dieser Route. |
InvalidCredentials | 401 | Token, Passwort oder Ticket sind falsch. | Prüfe sie. |
InvalidProperty | 400 | Diese Feldkombination ist hier nicht erlaubt. | Prüfe den Anfragetext. |
InvalidSession | 401 | Das Token fehlt oder ist falsch, oder der Bot wurde gesperrt. | Stoppe und prüfe das Token. Wiederholen hilft nicht. |
NotAuthenticated | 401 | Die Route braucht ein Token und hat keins bekommen. | Sende x-bot-token. |
DuplicateNonce | 409 | Dieselbe nonce wurde für eine andere Anfrage benutzt. | Nimm für jede neue Nachricht einen neuen Wert. |
NotFound | 404 | Route oder Objekt gibt es nicht. | Prüfe Pfad und IDs. |
NoEffect | 400 | Die Anfrage ändert nichts. | Ignoriere es. |
FailedValidation | 400 | Der Text verletzt ein Limit oder eine Regel. error sagt, welche, und fields nennt jedes Feld mit seiner Regel. | Korrigiere den Text. Wiederhole nicht dieselbe Anfrage. |
LiveKitUnavailable | 400 | Sprache ist auf diesem Server nicht verfügbar. | Versuche es später. |
NotAVoiceChannel | 400 | Der Kanal ist kein Sprachkanal. | Nutze einen Sprachkanal. |
AlreadyConnected | 400 | Der Bot ist schon in diesem Sprachkanal. | Trenne zuerst die Verbindung. |
NotConnected | 400 | Das Mitglied ist in keinem Sprachkanal. | Prüfe zuerst die Sprachstatus. |
UnknownNode | 400 | Den Sprachknoten gibt es nicht. | Nimm einen Namen aus features.livekit.nodes von GET /. |
FeatureDisabled | 400 | Die Funktion aus feature ist auf diesem Server aus. | Nicht wiederholen. Selbst gehostete Server schalten sie in ihrer Konfiguration ein. |
HeaderTooLarge | 400 | Ein Header ist zu groß, etwa der Grund fürs Audit-Log. | Kürze ihn. |
ProxyError | 400 | Der Link- oder Medien-Proxy konnte die Adresse nicht laden. | Prüfe, ob die Adresse öffentlich ist. |
FileTooSmall | 422 | Die hochgeladene Datei ist leer. | Sende eine Datei mit Inhalt. |
FileTooLarge | 422 | Die Datei ist über dem Limit max ihres Tags. | Sende eine kleinere Datei. |
FileTypeNotAllowed | 400 | Dieser Tag nimmt nur Bilder. | Sende ein Bild, oder nutze attachments. |
ImageProcessingFailed | 500 | Das Bild ließ sich nicht lesen. | Sende ein gültiges Bild. |
NoEmbedData | 400 | Der Link hat keine Vorschaudaten. | Ignoriere es. |
MissingHeaders | 400 | Ein nötiger Header fehlt. | Sende x-bot-token, und content-type bei einem Text. |
OperationFailed | 500 | Die Aktion ließ sich nicht abschließen. | Wiederhole einmal, später. |
IncorrectData | 400 | Die gespeicherten Daten passen nicht. with nennt sie. | Hole das Objekt neu. |
DatabaseError | 500 | Ein Datenbankaufruf ist auf dem Server fehlgeschlagen. | Warte und wiederhole mit wachsender Pause. |
VosoUnavailable | 400 | Der alte Sprachdienst ist nicht verfügbar. | Nutze LiveKit. |
RenderFail | 500 | Der Server konnte eine Vorlage nicht erzeugen. | Versuche es später. |
LabelMe | 500 | Ein Serverfehler ohne Bezeichnung. | Versuche es später. Melde es, wenn es bleibt. |
ContactSupport | 400 | Der Server möchte, dass sich jemand an den Support wendet. msg sagt, warum. | Zeige die Nachricht dem Eigentümer. |
InvalidFlagValue | 400 | Ein Flag hat einen Wert, den der Server nicht kennt. | Prüfe die Flags. |
TooManySounds | 400 | Das Soundboard des Servers ist voll. | Entferne zuerst einen Sound. max ist die Grenze. |
SoundAlreadyAdded | 409 | Dieser Sound aus der Bibliothek ist schon auf dem Soundboard des Servers. | Nichts zu tun. |
SoundLibraryUnavailable | 503 | Die Sound-Bibliothek ist noch nicht bereit. | Versuche es in einer Minute erneut. |
TooManySpeakers | 400 | Die Bühne hat so viele Sprecher, wie sie haben darf. | Setze zuerst einen Sprecher zurück ins Publikum. max ist die Grenze. |
PollEnded | 409 | Die Umfrage ist vorbei: keine Stimmen mehr, und sie lässt sich nicht noch einmal beenden. | Nicht wiederholen. |
Fehler von Konto-Routen
Bots sehen diese selten. Sie gehören zu Routen für Menschen, etwa zum Anmelden.
| Type | HTTP | Ursache | Lösung |
|---|---|---|---|
AlreadyOnboarded | 403 | Das Konto hat schon einen Benutzernamen. | Nur für die App. |
AgeNotDeclared | 403 | Das Konto hat sein Alter nicht angegeben. | Nur Menschen: in der App abschließen. |
UsernameTaken | 409 | Der Benutzername ist vergeben. | Wähle einen anderen Namen. |
InvalidUsername | 400 | Der Benutzername enthält unerlaubte Zeichen. | Nutze Buchstaben, Ziffern, ., - und _. |
DiscriminatorChangeRatelimited | 429 | Die Namensnummer wurde gerade erst geändert. | Warte. |
AlreadyFriends | 409 | Die Benutzer sind schon befreundet. | Bots haben keine Freunde. |
AlreadySentRequest | 409 | Eine Freundschaftsanfrage läuft. | Bots haben keine Freunde. |
Blocked | 409 | Der Benutzer ist blockiert. | Nur Menschen. |
NotFriends | 403 | Das braucht eine Freundschaft. | Bots haben keine Freunde. |
GroupInvitesRestricted | 403 | Die Person lehnt Gruppeneinladungen ab. | Nur Menschen. |
TooManyPendingFriendRequests | 400 | Zu viele offene Freundschaftsanfragen. | Nur Menschen. |
CannotRemoveYourself | 400 | Der Gruppeneigentümer kann sich nicht selbst entfernen. | Nur Menschen. |
GroupTooLarge | 403 | Die Gruppe ist voll. | Nur Menschen. |
AlreadyInGroup | 409 | Der Benutzer ist schon in der Gruppe. | Nur Menschen. |
NotInGroup | 404 | Der Benutzer ist nicht in der Gruppe. | Nur Menschen. |
CantCreateServers | 403 | Dieses Konto kann keine Server erstellen, Bots nie. | Erstelle den Server als Mensch. |
TooManyServers | 400 | Das Konto hat sein Server-Limit erreicht. | Verlasse zuerst einen Server. |
VanityUnavailable | 403 | Der Server kann keine eigene Adresse haben. | Nur Menschen. |
VanityTaken | 409 | Die eigene Adresse ist vergeben. | Wähle eine andere. |
VanityReserved | 400 | Die eigene Adresse ist reserviert. | Wähle eine andere. |
VanityPaused | 410 | Die eigene Adresse ist pausiert. | Frage den Support. |
TooManyCommunityItems | 400 | Das Limit an Einträgen ist erreicht. | Nicht für Bots. |
MissingPlatformPermission | 403 | Das braucht eine Berechtigung des Zrzur-Teams. | Nicht für Bots. |
ProfileTextFiltered | 422 | Der Plattformfilter hat diesen Text gestoppt. | Ändere den Text oder bitte im Support um eine Prüfung. |
CommunityItemConflict | 409 | Der Galerie-Eintrag hat sich inzwischen geändert. | Nicht für Bots. |
TooManyReports | 429 | Zu viele Meldungen in kurzer Zeit. | Warte. |
SafetyCaseConflict | 409 | Der Sicherheitsfall hat sich inzwischen geändert. | Nicht für Bots. |
TooManySupercharges | 400 | Das Limit an Wings ist erreicht. | Nicht für Bots. |
TooManyBotCreations | 429 | Das Konto hat in den letzten 7 Tagen 7 Bots erstellt. | Warte bis resets_at und erstelle den Bot dann. |
PromotionSlotsFull | 409 | Alle Werbeplätze sind belegt. | Nicht für Bots. |
NotOnDiscover | 400 | Der Server ist nicht in Entdecken. | Nicht für Bots. |
ReachedMaximumBots | 400 | Das Konto hat sein Bot-Limit erreicht. | Lösche zuerst einen alten Bot. |
IsNotBot | 400 | Diese Route ist für Bots. | Sende x-bot-token. |
CannotReportYourself | 400 | Man kann sich nicht selbst melden. | Nicht für Bots. |
CaptchaFailed | 400 | Das Captcha ist fehlgeschlagen. | Nur Menschen. |
BlockedByShield | 400 | Der Anmeldeschutz hat die Anfrage abgelehnt. | Nur Menschen. |
UnverifiedAccount | 403 | Die E-Mail des Kontos ist nicht bestätigt. | Bestätige die E-Mail. |
EmailFailed | 500 | Die E-Mail ließ sich nicht senden. | Versuche es später. |
InvalidToken | 401 | Link oder Code sind falsch oder abgelaufen. | Fordere einen neuen an. |
MissingInvite | 400 | Dieser Server braucht eine Einladung zur Anmeldung. | Nur Menschen. |
InvalidInvite | 400 | Die Einladung ist falsch. | Fordere eine neue an. |
CompromisedPassword | 400 | Das Passwort steht auf einer Liste geleakter Passwörter. | Wähle ein anderes. |
ShortPassword | 400 | Das Passwort ist zu kurz. | Wähle ein längeres. |
LockedOut | 403 | Zu viele fehlgeschlagene Anmeldungen. | Warte. |
TotpAlreadyEnabled | 400 | Der Authenticator ist schon an. | Nur Menschen. |
DisallowedMFAMethod | 400 | Diese Prüfung ist hier nicht erlaubt. | Nur Menschen. |
AgeRequirementNotMet | 403 | Das Alter des Kontos reicht dafür nicht. | Nur Menschen. |
AgeChangeNotAllowed | 403 | Das Alter lässt sich nicht ändern. | Nur Menschen. |
AgeRestricted | 403 | Der Inhalt ist altersbeschränkt. | Nur Menschen. |
TooManyServerEvents | 400 | Der Server hat so viele geplante Events, wie er haben darf. | Nur für Menschen. |
ForwardMatureContent | 403 | Eine Nachricht aus einem Kanal für Erwachsene lässt sich nur in einen anderen solchen Kanal weiterleiten. | Nur für Menschen: Bots können nicht weiterleiten. |
OAuth2-Fehler
POST /oauth2/token folgt dem OAuth2-Standard und antwortet mit error und error_description statt type. Siehe OAuth2.