Портал разработчиков
Экспериментально Платформа для ботов и приложений активно развивается. Поддержка собственных серверов вышла 13.08.2026, и функций там пока меньше, чем в облаке. Посмотрите, что поддерживается.
← Документация

Права доступа

Боты получают права в виде 53-битного целочисленного битового поля в формате Discord. Биты и их значения совпадают с Discord; значения берутся из собственных таблиц прав групп и каналов GameVox. Биты без аналога в GameVox возвращают 0.

Сопоставление: GameVox → Discord

Бит DiscordHexИсточник в GameVox
ADMINISTRATOR 0x8 groups.group_type IN ('owner', 'admin')
VIEW_CHANNEL 0x400 channel_permissions.view_channel / group_permissions.view_channels
READ_MESSAGE_HISTORY 0x10000 То же, что VIEW_CHANNEL (отдельного переключателя истории нет)
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 В v1 только для администраторов
CONNECT (voice) 0x100000 join_voice
SPEAK 0x200000 speak_in_voice
STREAM (screen share) 0x200 screen_share
USE_VAD 0x2000000 use_vad (по умолчанию true; false принудительно включает режим рации)
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, все не равны 'deny'
MANAGE_GUILD 0x20 edit_server != 'deny'
MANAGE_ROLES 0x10000000 manage_members
MANAGE_NICKNAMES 0x8000000 manage_members (в связке с MANAGE_ROLES)
CHANGE_NICKNAME 0x4000000 Всегда разрешено (как по умолчанию в Discord)
MANAGE_WEBHOOKS 0x20000000 В v1 владелец / администратор
VIEW_AUDIT_LOG 0x80 В v1 владелец / администратор
PRIORITY_SPEAKER 0x100 priority_speaker
MANAGE_EVENTS 0x200000000 manage_events != 'deny'
CREATE_EVENTS 0x100000000000 manage_events != 'deny' (в связке с MANAGE_EVENTS)
MANAGE_GUILD_EXPRESSIONS 0x40000000 manage_emojis != 'deny'
CREATE_GUILD_EXPRESSIONS 0x80000000000 manage_emojis != 'deny' (в связке)
DEAFEN_MEMBERS 0x800000 deafen_users != 'deny'
SEND_MESSAGES_IN_THREADS 0x4000000000 send_messages (в связке с SEND_MESSAGES)

Биты, включённые по умолчанию

Они установлены у каждого участника без запрета, как у роли по умолчанию в Discord. Если логика вашего бота их проверяет, они всегда будут выданы (если только участник не забанен):

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

Биты, которые всегда равны нулю

У них пока нет аналога в GameVox, и они возвращаются неустановленными. Ботам, которые от них зависят, стоит корректно обходиться без них (большинство библиотек и так считают запрещённый бит признаком «функция здесь не поддерживается»).

  • MANAGE_THREADS, USE_PUBLIC_THREADS, USE_PRIVATE_THREADS: в v1 темы (threads) это заглушка.
  • MODERATE_MEMBERS (тайм-аут): собственного аналога нет.
  • USE_EMBEDDED_ACTIVITIES: функции активностей нет.
  • USE_SOUNDBOARD, SEND_VOICE_MESSAGES: не реализованы.
  • Биты монетизации: Premium Apps нет.

Вычисление прав

Такой же алгоритм из 7 шагов, как в Discord:

  1. Начните с прав @everyone для сервера.
  2. Объедините по OR все роли участника.
  3. Если результат содержит ADMINISTRATOR, остановитесь: у участника есть всё.
  4. Примените перезаписи канала для @everyone (сначала allow, затем deny).
  5. Примените перезаписи канала для каждой роли (сначала allow, затем deny).
  6. Примените перезаписи канала для пользователя (сначала allow, затем deny).
  7. Если канал находится в категории, её перезаписи тоже применяются на шаге ролей / пользователя.

Именно на шаге 2 проявляется отличие, описанное ниже: участник GameVox состоит в одной группе, поэтому объединять по OR нужно одну роль. См. Одна группа на участника.

Одна группа на участника

Самое большое поведенческое отличие от Discord. Участник GameVox состоит ровно в одной группе на сервере, тогда как участник Discord может иметь сразу много ролей. Назначение группы заменяет ту группу, в которой участник был раньше.

Эндпоинты ролей по-прежнему работают, и привычные вам библиотеки по-прежнему их вызывают, просто всё сводится к этой одной группе:

ВызовЧто происходит
PUT .../members/{id}/roles/{rid} Участник оказывается в этой группе. Предыдущая группа заменяется, а не сохраняется рядом.
DELETE .../members/{id}/roles/{rid} Убирает группу. Если это была его единственная группа, участник возвращается в группу сервера по умолчанию, а не остаётся без группы.
PATCH .../members/{id} с roles: [...]Принимается, после чего сводится к группе с наивысшим рангом из списка. Пустой список означает группу по умолчанию.

Список сводится, а не отклоняется, чтобы обычный member.roles.set([...]) продолжал работать. Побеждает наивысший ранг, потому что именно ранг определяет положение: если даны группа модераторов и группа цвета, участник будет модератором.

У групп есть лимиты на загрузку, голос, камеру и демонстрацию экрана, и участник получает самый щедрый лимит среди своих групп. С одной группой это просто лимит его группы. Это вторая причина, по которой приложение не может держать кого-то в двух группах: так можно было бы обойти ограничение, установленное оператором.

Собственная группа приложения, созданная при его установке, всё это не затрагивает. Членство в ней принадлежит установке, и никакое приложение не может добавить себя в неё или убрать из неё другое приложение.

Иерархия ролей

Собственный groups.rank соответствует role.position в Discord. Бот может управлять только ролями строго ниже позиции своей высшей роли, как по правилам Discord. Вызовы PATCH .../members/{id}/roles/{rid} с ролью на уровне высшей роли бота или выше возвращают 403.

Тайм-ауты

У поля Discord communication_disabled_until в v1 нет аналога в GameVox. PATCH участника с этим полем возвращает 400 с понятной ошибкой. Вместо этого используйте кик, отключение микрофона или бан.

← Назад к документации