Entwicklerportal
Experimentell Die Bot- & App-Plattform wird aktiv weiterentwickelt. Die Unterstützung für selbst gehostete Server ist am 13.08.2026 erschienen und bietet weniger Funktionen als die Cloud. Sieh dir an, was unterstützt wird.
← Doku

Berechtigungen

Bots erhalten Berechtigungen als 53-Bit-Integer-Bitfeld in Discord-Form. Bits und Bedeutungen entsprechen Discord; die Werte stammen aus den nativen Gruppen- und Kanal-Berechtigungstabellen von GameVox. Bits ohne GameVox-Entsprechung liefern 0.

Zuordnung nativ → Discord

Discord-BitHexGameVox-Quelle
ADMINISTRATOR 0x8 groups.group_type IN ('owner', 'admin')
VIEW_CHANNEL 0x400 channel_permissions.view_channel / group_permissions.view_channels
READ_MESSAGE_HISTORY 0x10000 Wie VIEW_CHANNEL (kein separater Verlaufsschalter)
SEND_MESSAGES 0x800 send_messages
MANAGE_MESSAGES 0x2000 manage_messages
EMBED_LINKS 0x4000 can_post_links
ATTACH_FILES 0x8000 send_files
ADD_REACTIONS 0x40 add_reactions
MENTION_EVERYONE 0x20000 In v1 nur für Admins
CONNECT (voice) 0x100000 join_voice
SPEAK 0x200000 speak_in_voice
STREAM (screen share) 0x200 screen_share
USE_VAD 0x2000000 use_vad (Standard: true; auf false erzwingt Push-to-Talk)
KICK_MEMBERS 0x2 kick_users != 'deny'
BAN_MEMBERS 0x4 ban_users != 'deny'
MUTE_MEMBERS 0x400000 mute_users != 'deny'
MOVE_MEMBERS 0x1000000 move_users != 'deny'
MANAGE_CHANNELS 0x10 create_channels / edit_channels / delete_channels alle ungleich 'deny'
MANAGE_GUILD 0x20 edit_server != 'deny'
MANAGE_ROLES 0x10000000 manage_members
MANAGE_NICKNAMES 0x8000000 manage_members (mit MANAGE_ROLES gebündelt)
CHANGE_NICKNAME 0x4000000 Immer gewährt (entspricht Discords Standard)
MANAGE_WEBHOOKS 0x20000000 In v1 Eigentümer / Admin
VIEW_AUDIT_LOG 0x80 In v1 Eigentümer / Admin
PRIORITY_SPEAKER 0x100 priority_speaker
MANAGE_EVENTS 0x200000000 manage_events != 'deny'
CREATE_EVENTS 0x100000000000 manage_events != 'deny' (mit MANAGE_EVENTS gebündelt)
MANAGE_GUILD_EXPRESSIONS 0x40000000 manage_emojis != 'deny'
CREATE_GUILD_EXPRESSIONS 0x80000000000 manage_emojis != 'deny' (gebündelt)
DEAFEN_MEMBERS 0x800000 deafen_users != 'deny'
SEND_MESSAGES_IN_THREADS 0x4000000000 send_messages (mit SEND_MESSAGES gebündelt)

Standardmäßig aktive Bits

Diese sind für jedes nicht gesperrte Mitglied gesetzt und entsprechen Discords Standardrollenverhalten. Wenn die Logik deines Bots darauf prüft, erscheinen sie immer als gewährt (sofern das Mitglied nicht gebannt ist):

  • CREATE_INSTANT_INVITE (0x1)
  • USE_APPLICATION_COMMANDS (0x80000000)
  • USE_EXTERNAL_EMOJIS (0x40000)
  • USE_EXTERNAL_STICKERS (0x2000000000)

Bits, die immer null liefern

Diese haben in GameVox noch keine Entsprechung und werden als nicht gesetzt gemeldet. Bots, die davon abhängen, sollten damit umgehen können (die meisten Bibliotheken behandeln ein verweigertes Bit ohnehin als „Funktion hier nicht unterstützt“).

  • MANAGE_THREADS, USE_PUBLIC_THREADS, USE_PRIVATE_THREADS: Threads sind in v1 nur Platzhalter.
  • MODERATE_MEMBERS (Timeout): keine native Entsprechung.
  • USE_EMBEDDED_ACTIVITIES: keine Aktivitäten-Funktion.
  • USE_SOUNDBOARD, SEND_VOICE_MESSAGES: nicht implementiert.
  • Monetarisierungs-Bits: keine Premium-Apps.

Berechnung der Berechtigungen

Identisch zu Discords 7-Schritte-Algorithmus:

  1. Beginne mit den @everyone-Berechtigungen der Guild.
  2. Verodere jede Rolle, die das Mitglied hat.
  3. Enthält das Ergebnis ADMINISTRATOR, wird abgekürzt: Das Mitglied hat alles.
  4. Wende die @everyone-Kanal-Overwrites an (erst allow, dann deny).
  5. Wende die Kanal-Overwrites jeder Rolle an (erst allow, dann deny).
  6. Wende die Kanal-Overwrites der Person an (erst allow, dann deny).
  7. Liegt der Kanal in einer Kategorie, gelten deren Overwrites ebenfalls auf Rollen- und Personenebene.

In Schritt 2 zeigt sich der unten beschriebene Unterschied: Ein GameVox-Mitglied ist in einer Gruppe, es gibt also genau eine Rolle zu verodern. Siehe Eine Gruppe pro Mitglied.

Eine Gruppe pro Mitglied

Der größte Verhaltensunterschied zu Discord. Ein GameVox-Mitglied gehört genau einer Gruppe pro Server an, während ein Discord-Mitglied viele Rollen gleichzeitig haben kann. Das Zuweisen einer Gruppe ersetzt die bisherige Gruppe des Mitglieds.

Die Rollen-Endpunkte funktionieren weiterhin, und die Bibliotheken, die du ohnehin nutzt, rufen sie weiterhin auf — sie lösen sich lediglich auf diese eine Gruppe auf:

AufrufWas passiert
PUT .../members/{id}/roles/{rid} Das Mitglied landet in dieser Gruppe. Die vorherige Gruppe wird ersetzt, nicht daneben behalten.
DELETE .../members/{id}/roles/{rid} Entfernt sie. War es die einzige Gruppe, fällt das Mitglied auf die Standardgruppe des Servers zurück, statt gruppenlos zu sein.
PATCH .../members/{id} mit roles: [...]Wird akzeptiert und dann auf die ranghöchste Gruppe der Liste reduziert. Eine leere Liste bedeutet die Standardgruppe.

Eine Liste wird reduziert statt abgelehnt, damit ein gewöhnliches member.roles.set([...]) weiter funktioniert. Der höchste Rang gewinnt, weil der Rang die Stellung bestimmt: Bei einer Moderationsgruppe und einer Farbgruppe ist das Mitglied Moderatorin oder Moderator.

Gruppen tragen Obergrenzen für Uploads, Sprache, Kamera und Bildschirmfreigabe, und ein Mitglied erhält die großzügigste Obergrenze aller Gruppen, in denen es ist. Bei einer Gruppe ist das schlicht deren Obergrenze — was der zweite Grund dafür ist, dass eine App niemanden in zwei Gruppen halten kann, denn das wäre ein Weg, eine von der betreibenden Person gesetzte Grenze auszuhebeln.

Die eigene Gruppe einer Anwendung — die, die ihre Installation angelegt hat — ist davon nicht betroffen. Ihre Mitgliedschaft gehört zur Installation, und keine App kann sich selbst hinzufügen oder eine andere App daraus entfernen.

Rollenhierarchie

Das native groups.rank bildet auf Discords role.position ab. Ein Bot kann ausschließlich Rollen unterhalb der Position seiner eigenen höchsten Rolle verwalten, genau wie bei Discord. Aufrufe von PATCH .../members/{id}/roles/{rid} mit einer Rolle auf oder über der obersten Rolle des Bots geben 403 zurück.

Timeouts

Discords Feld communication_disabled_until hat in v1 keine GameVox-Entsprechung. Ein PATCH auf ein Mitglied mit gesetztem Feld gibt 400 mit einer klaren Fehlermeldung zurück. Nutze stattdessen Kick / Stummschalten / Bann.

← Zurück zur Doku