Ajustes de usuario Proto
User settings are options that a user can configure to change the behavior of their account or client. These settings are now stored in a protocol buffer format, which is more efficient and allows for more flexibility. Multiple user settings protos are supported, each with a different purpose.
⬇️ COLAPSABLE:
Protobufs are a binary format, so you'll need to decode them before you can read them. If you want to learn more about them, a good start is Google's official documentation. All protobufs transmitted in the API are encoded in base64.
The types documented below follow standard protobuf types (e.g. uint32
, bool
, fixed64
, etc.). Some values are wrapped in containers such as StringValue
or BoolValue
. These are wrappers that allow the value to be null
or unset, but must be unwrapped to access the value. They are provided by the google.protobuf.wrappers
and google.protobuf.timestamp
packages.
The order of the documented structures below is the same order used in the wire format.
All protobuf definitions used by Discord are available in this repository. They are also packaged on PyPI and npm for easy installation.
User Settings Proto Type
| Value | Name | Description | Object | | ----- | ------------- | -------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | 1 | PRELOADED | General Discord user settings, sent in the Ready event | Preloaded User Settings | | 2 | FRECENCY | Frecency and favorites storage, used for low-priority, lazy-loaded settings | Frecency User Settings | | 3 | TEST_SETTINGS | Unknown | Unknown |
Versions Structure
| Field | Type | Description | | ------------------ | ------ | -------------------------------------------- | | client_version | uint32 | The client migration version | | server_version ^1^ | uint32 | The server migration version (currently 0
) | | data_version ^1^ | uint32 | The incremental data version |
^1^ Should not be modified by clients. data_version
is automatically incremented on every change.
Preloaded User Settings Object
Serialized as discord_protos.discord_users.v1.PreloadedUserSettings
.
Preloaded User Settings Structure
| Field | Type | Description | | ---------------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------------ | | versions | versions object | Version information for the protocol and data | | inbox | inbox settings object | Settings related to the user's inbox view | | guilds | all guild settings object | Settings specific to guilds and channels | | user_content | user content settings object | Dismissal states for various types of upsells and promotions | | voice_and_video | voice and video settings object | Voice and video call configuration | | text_and_images | text and images settings object | Chat and image rendering settings | | notifications | notification settings object | Notification-related preferences | | privacy | privacy settings object | User privacy preferences | | debug | debug settings object | Client debug settings | | game_library | game library settings object | Game library settings | | status | status settings object | User presence customization settings | | localization | localization settings object | Client localization preferences | | appearance | appearance settings object | Client appearance settings | | guild_folders | guild folders object | Organization settings for guilds | | favorites | favorites object | The serialized client favorites pseudo-guild | | audio_context_settings | audio settings object | RTC audio context settings | | communities | communities settings object | Community guild settings | | broadcast | broadcast settings object | Broadcast settings | | clips | clips settings object | Clips settings | | for_later | for later settings object | For Later section settings for bookmarks and reminders | | safety_settings | safety settings object | User safety settings | | icymi_settings | ICYMI settings object | ICYMI (In Case You Missed It) feed settings | | applications | all application settings object | Application-specific settings |
Inbox Settings Structure
| Field | Type | Description | | --------------- | ---------------------------- | ---------------------------------------------- | | current_tab | inbox tab enum | The currently selected tab in the inbox | | viewed_tutorial | boolean | Whether the user has viewed the inbox tutorial |
Inbox Tab
| Value | Name | Description | | ----- | ------------ | ---------------------- | | 0 | UNSPECIFIED | Default unset value | | 1 | MENTIONS | Mentions tab | | 2 | UNREADS | Unreads tab | | 3 | TODOS | Message reminders tab | | 4 | FOR_YOU | Notification items tab | | 5 | GAME_INVITES | Game invites tab | | 6 | BOOKMARKS | Bookmarks tab | | 7 | SCHEDULED | Scheduled messages tab |
All Guild Settings Structure
| Field | Type | Description | | ------------------------- | ---------------------------------------------------------------- | ------------------------------------------- | | guilds | map[fixed64, guild settings object] | Per-guild personalization settings | | ~~leaderboards_disabled~~ | ~~bool~~ | ~~Whether guild leaderboards are disabled~~ |
Guild Settings Structure
| Field | Type | Description | | -------------------------------------- | -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | channels | map[fixed64, channel settings object] | Settings specific to channels within the guild | | hub_progress | uint32 | Hub progress flags | | guild_onboarding_progress | uint32 | Guild onboarding progress flags | | guild_recents_dismissed_at? | timestamp | When the guild recents were last dismissed | | dismissed_guild_content | bytes | Per-guild dismissable content, encoded as a byte array of integer enum values | | join_sound? | custom call sound object | Custom sound played when joining a call in this channel | | mobile_redesign_channel_list_settings? | channel list settings object | Channel list settings | | disable_raid_alert_push | boolean | Whether to disable raid alert push notifications | | disable_raid_alert_nag | boolean | Whether to disable raid alert in-client nag screens | | custom_notification_sound_config? | custom notification sound config object | Custom notification sound configuration | | leaderboards_disabled | boolean | Whether guild leaderboards are disabled |
Channel Settings Structure
| Field | Type | Description | | --------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------- | | collapsed_in_inbox | boolean | Whether the channel is collapsed in the inbox | | icon_emoji? | channel icon emoji | The custom emoji icon for the channel | | custom_notification_sound_config? | custom notification sound config | Custom notification sound configuration for the channel |
Channel Icon Emoji Structure
| Field | Type | Description | | ------ | ----------- | --------------------- | | id? | UInt64Value | The ID of the emoji | | name? | StringValue | The name of the emoji | | color? | UInt64Value | The color of the icon |
Custom Notification Sound Config Structure
| Field | Type | Description | | --------------------------- | ----------- | ---------------------------------------------------------------------- | | notification_sound_pack_id? | StringValue | The ID of the notification sound pack used |
Hub Progress Flags
| Value | Name | Description | | ------ | ------------ | ---------------------------------------- | | 1 <<
0 | JOIN_GUILD | User has joined a guild in the hub | | 1 <<
1 | INVITE_USER | User has sent an invite for the hub | | 1 <<
2 | CONTACT_SYNC | User has accepted the contact sync modal |
Guild Onboarding Progress Flags
| Value | Name | Description | | ------ | -------------- | ----------------------------------------- | | 1 <<
0 | NOTICE_SHOWN | User has been shown the onboarding notice | | 1 <<
1 | NOTICE_CLEARED | User has cleared the onboarding notice |
Custom Call Sound Structure
| Field | Type | Description | | -------- | ------- | ------------------------------------------ | | sound_id | fixed64 | The ID of the custom call soundboard sound | | guild_id | fixed64 | The ID of the guild the sound is in |
Notification Sound Pack
| Value | Description | | -------------- | ---------------------- | | classic | Default Discord sounds | | retro | Retro | | bop | Bubble | | ducky | Ducky | | lofi | Lofi | | asmr | ASMR | | discodo | Discodo easter egg | | halloween | Halloween | | winter_holiday | Winter holiday |
Channel List Settings Structure
| Field | Type | Description | | ----------------- | ----------- | --------------------------- | | layout? | StringValue | Channel list layout setting | | message_previews? | StringValue | Message preview setting |
User Content Settings Structure
| Field | Type | Description | | --------------------------------------------- | -------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | | dismissed_contents | bytes | User dismissed content, encoded as a byte array of integer enum values | | last_dismissed_outbound_promotion_start_date? | StringValue | When the last dismissed outbound promotion started | | premium_tier_0_modal_dismissed_at? | Timestamp | When the Nitro Basic promotion modal was dismissed | | guild_onboarding_upsell_dismissed_at? | Timestamp | When the guild onboarding upsell was dismissed | | safety_user_sentiment_notice_dismissed_at? | Timestamp | When the safety user sentiment notice was dismissed | | last_received_changelog_id | fixed64 | The ID of the last received changelog | | recurring_dismissible_content_states | map[int32, recurring dismissible content state object] | States of recurring dismissible content entries |
Recurring Dismissible Content State Structure
| Field | Type | Description | | ---------------------- | ------ | ----------------------------------------------------------------------- | | last_dismissed_version | uint32 | How many times the content has been dismissed | | last_dismissed_at_ms | uint64 | Unix timestamp (in milliseconds) of when the content was last dismissed |
Voice And Video Settings Structure
| Field | Type | Description | | --------------------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | | blur | video filter background blur object | Video call background blur settings | | preset_option | uint32 | The selected video call background preset | | custom_asset | video filter asset object | Custom video call background asset | | always_preview_video? | BoolValue | Whether to always preview video before enabling it (default false) | | afk_timeout? | UInt32Value | Duration (in seconds) the user needs to be inactive until clients update their AFK state (default 600) | | stream_notifications_enabled? | BoolValue | Whether to receive stream notifications for friends (default true) | | native_phone_integration_enabled? | BoolValue | Whether to enable the new Discord mobile phone number friend requesting feature (default true) | | soundboard_settings? | soundboard settings object | Settings for the soundboard feature | | disable_stream_previews? | BoolValue | Whether clients should disable sending stream previews (default false) | | soundmoji_volume? | FloatValue | Volume level for soundmoji playback (0-100, default 100) |
Video Filter Background Blur Structure
| Field | Type | Description | | -------- | ------- | ----------------------------------------------- | | use_blur | boolean | Whether to apply background blur in video calls |
Video Filter Asset Structure
| Field | Type | Description | | ---------- | ------- | ---------------------------------- | | id | fixed64 | The ID of the video filter asset | | asset_hash | string | The hash of the video filter asset |
Soundboard Settings Structure
| Field | Type | Description | | ------ | ----- | -------------------------------------------- | | volume | float | Volume level for soundboard playback (0-100) |
Video Filter Background Preset
| Value | Description | | ----- | ----------------- | | 0 | Unset | | 1 | Cybercity | | 2 | Discord the Movie | | 3 | Wumpus Vacation | | 4 | Vaporwave | | 7 | Capernite Day | | 8 | Capernite Night | | 9 | Hacker Den | | 10 | Wumpice |
Text And Images Settings Structure
| Field | Type | Description | | ------------------------------------- | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- | | diversity_surrogate? | StringValue | Unicode surrogate for diversity emoji | | use_rich_chat_input? (deprecated) | BoolValue | Inverse of use_legacy_chat_input
| | use_thread_sidebar? | BoolValue | Whether to display threads in the sidebar (default true) | | render_spoilers? | StringValue | How spoilers should be rendered | | emoji_picker_collapsed_sections | array[string] | Sections of the emoji picker that are collapsed | | sticker_picker_collapsed_sections | array[string] | Sections of the sticker picker that are collapsed | | view_image_descriptions? | BoolValue | Whether to show image alt text (default false) | | show_command_suggestions? | BoolValue | Whether to show command suggestions in chat (default true) | | inline_attachment_media? | BoolValue | Whether to display attachments when they are uploaded in chat (default true) | | inline_embed_media? | BoolValue | Whether to display videos and images from links posted in chat (default true) | | gif_auto_play? | BoolValue | Whether GIFs are automatically played when the Discord client is in focus (default true) | | render_embeds? | BoolValue | Whether to render message embeds (default true) | | render_reactions? | BoolValue | Whether to render message reactions (default true) | | animate_emoji? | BoolValue | Whether to play animated emojis in chat (default true) | | animate_stickers? | UInt32Value | When to animate stickers in chat | | enable_tts_command? | BoolValue | Whether to allow TTS messages to be sent and played (default true) | | message_display_compact? | BoolValue | Whether to use the compact Discord display mode | | explicit_content_filter? | UInt32Value | The explicit content filter for explicit content in all messages (default NON_FRIENDS
) | | view_nsfw_guilds? | BoolValue | Whether NSFW guilds are shown on iOS (default false) | | convert_emoticons? | BoolValue | Whether to convert emoticons into emojis (e.g. :)
-> 🙂
) (default true) | | expression_suggestions_enabled? | BoolValue | Whether to show expression suggestions in chat (default true) | | view_nsfw_commands? | BoolValue | Whether NSFW application commands are shown in DMs (default false) | | use_legacy_chat_input? | BoolValue | Whether to use the legacy chat input UI (default false) | | soundboard_picker_collapsed_sections | array[string] | Sections of the soundboard picker that are collapsed | | dm_spam_filter? (deprecated) | UInt32Value | DM spam filter setting | | dm_spam_filter_v2 | DM spam filter v2 enum | DM spam filter setting | | include_stickers_in_autocomplete? | BoolValue | Whether to autocomplete stickers in chat (default false) | | explicit_content_settings? | explicit content settings object | Explicit content settings | | keyword_filter_settings? | keyword filter settings object | Client-side keyword filter settings | | include_soundmoji_in_autocomplete? | BoolValue | Whether to autocomplete soundmoji in chat (default true) |
Spoiler Render Options
| Value | Description | | ------------ | --------------------------------------------------- | | ALWAYS | Always render spoilers | | ON_CLICK | Render spoilers on click (default) | | IF_MODERATOR | Always render spoilers in guilds the user moderates |
Emoji Picker Section
This may also be a snowflake to represent a specific guild in the emoji picker.
| Value | Description | | --------------- | ------------------- | | FAVORITES | Favorite emoji | | TOP_GUILD_EMOJI | Top guild emoji | | RECENT | Recently used emoji | | people | People emoji | | nature | Nature emoji | | food | Food emoji | | activity | Activity emoji | | travel | Travel emoji | | objects | Object emoji | | symbols | Symbol emoji | | flags | Flag emoji |
Sticker Picker Section
This may also be a snowflake to represent a specific guild in the sticker picker.
| Value | Description | | -------- | ---------------------- | | FAVORITE | Favorite stickers | | RECENT | Recently used stickers |
Soundboard Picker Section
This may also be a snowflake to represent a specific guild in the soundboard sound picker.
| Value | Description | | ----- | ---------------------- | | 0 | Favorite sounds | | 4 | Default Discord sounds |
DM Spam Filter
| Value | Name | Description | | ----- | ----------------------- | ------------------------------------------------- | | 0 | DISABLED | DM spam filter is disabled | | 1 | NON_FRIENDS | Apply spam filter to non-friends | | 2 | FRIENDS_AND_NON_FRIENDS | Apply spam filter to both friends and non-friends |
DM Spam Filter V2
| Value | Name | Description | | ----- | ----------------------- | ------------------------------------------------- | | 0 | UNSET | Default unset value (equates to NON_FRIENDS
) | | 1 | DISABLED | DM spam filter is disabled | | 2 | NON_FRIENDS | Apply spam filter to non-friends | | 3 | FRIENDS_AND_NON_FRIENDS | Apply spam filter to both friends and non-friends |
Explicit Content Settings Structure
| Field | Type | Description | | ------------------------------ | -------------------------------------------------------------- | ---------------------------------------------------- | | explicit_content_guilds | explicit content redaction enum | Redaction setting for explicit content in guilds | | explicit_content_friend_dm | explicit content redaction enum | Redaction setting for explicit content in friend DMs | | explicit_content_non_friend_dm | explicit content redaction enum | Redaction setting for explicit content in other DMs |
Explicit Content Redaction
| Value | Name | Description | | ----- | ----- | ------------------------------------------------------------------------------------------ | | 0 | UNSET | Default unset value (equates to BLOCK
for explicit_content_non_friend_dm
, else SHOW
) | | 1 | SHOW | Disable explicit content filtering | | 2 | BLUR | Blur explicit content | | 3 | BLOCK | Block explicit content entirely |
Keyword Filter Settings Structure
| Field | Type | Description | | --------------- | --------- | ------------------------------------------------ | | profanity? | BoolValue | Whether to filter profanity (default false) | | sexual_content? | BoolValue | Whether to filter sexual content (default false) | | slurs? | BoolValue | Whether to filter slurs (default false) |
Notification Settings Structure
| Field | Type | Description | | ---------------------------------------- | -------------------------------------------------------------- | --------------------------------------------------------------------------- | | show_in_app_notifications? | BoolValue | Whether to show in-app notifications (default true) | | notify_friends_on_go_live? | BoolValue | Whether to notify friends when streaming in eligible guilds (default false) | | notification_center_acked_before_id | fixed64 | The ID of the last acknowledged notification center item | | ~~enable_burst_reaction_notifications?~~ | ~~BoolValue~~ | ~~Whether to enable burst reaction notifications~~ | | quiet_mode? | BoolValue | Whether quiet mode is enabled (default false) | | focus_mode_expires_at_ms | fixed64 | Unix timestamp (in milliseconds) of when focus mode expires | | reaction_notifications | reaction notification type enum | Reaction notification settings |
Reaction Notification Type
| Value | Name | Description | | ----- | ---------------------- | ----------------------------------------- | | 0 | NOTIFICATIONS_ENABLED | Enable reaction notifications | | 1 | ONLY_DMS | Only enable reaction notifications in DMs | | 2 | NOTIFICATIONS_DISABLED | Disable reaction notifications |
Privacy Settings Structure
| Field | Type | Description | | ----------------------------------------------- | -------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | | allow_activity_party_privacy_friends? | BoolValue | Whether to allow friends to join your activity without sending a request (default true) | | allow_activity_party_privacy_voice_channel? ^1^ | BoolValue | Whether to allow people in the same voice channel as you to join your activity without sending a request (default true) | | restricted_guild_ids | array[fixed64] | The IDs of guilds that you will not receive DMs from | | default_guilds_restricted | boolean | Whether to automatically disable DMs between you and members of new guilds you join (default false) | | allow_accessibility_detection | boolean | Whether to allow Discord to track screen reader usage (default false) | | detect_platform_accounts? | BoolValue | Whether to automatically detect accounts from services like Steam and Blizzard when opening the Discord client (default true) | | passwordless? (deprecated) | BoolValue | Whether to enable passwordless login (default true) | | contact_sync_enabled? | BoolValue | Whether to enable contact sync on Discord mobile (default false) | | friend_source_flags? | UInt32Value | The user's friend source flags (default all) | | friend_discovery_flags? | UInt32Value | The user's friend discovery flags (default none) | | activity_restricted_guild_ids | array[fixed64] | The IDs of guilds your activity presence will be hidden in | | default_guilds_activity_restricted? | guild activity status restriction default enum | Default activity presence restriction setting for new guilds (default false) | | activity_joining_restricted_guild_ids | array[fixed64] | The IDs of guilds that will not be able to join your current activity | | message_request_restricted_guild_ids | array[fixed64] | The IDs of guilds whose originating DMs will not be filtered into message requests | | default_message_request_restricted? | BoolValue | Whether to automatically disable message requests in new guilds (default false) | | drops_opted_out? (deprecated) | BoolValue | Whether to opt out of drops (default false) | | non_spam_retraining_opt_in? | BoolValue | Whether to help improve Discord spam models when marking messages as non-spam | | family_center_enabled? | BoolValue | Whether family center is enabled (default false) | | family_center_enabled_v2? | BoolValue | Whether family center is enabled (default false) | | hide_legacy_username? | BoolValue | Whether to hide the user's pre-pomelo username | | inappropriate_conversation_warnings? | BoolValue | Whether to warn about inappropriate conversations in DMs (default true) | | recent_games_enabled? | BoolValue | Whether to show recent games on your profile (default true) | | guilds_leaderboard_opt_out_default | guilds leaderboard opt out default enum | Whether to opt out of leaderboards for new guilds by default | | allow_game_friend_dms_in_discord? | BoolValue | Whether to allow game friend DMs in Discord (default true) | | default_guilds_restricted_v2? | BoolValue | Whether new guilds are restricted by default (default false) | | slayer_sdk_receive_dms_in_game | slayer SDK receive in game DMs enum | Setting for receiving in-game DMs via the social layer SDK |
^1^ Does not apply to community guilds.
Friend Source Flags
| Value | Name | Description | | ------ | --------------- | --------------------------------------------------------------- | | 1 <<
1 | MUTUAL_FRIENDS | Whether mutual friends can add the user as friend | | 1 <<
2 | MUTUAL_GUILDS | Whether members in the user's guilds can add the user as friend | | 1 <<
3 | NO_RELATION ^3^ | Whether users with no relation can add the user as friend |
^3^ Requires MUTUAL_FRIENDS
and MUTUAL_GUILDS
.
Guild Activity Status Restriction Default
| Value | Name | Description | | ----- | ------------------- | ---------------------------------------------------------- | | 0 | OFF | Do not restrict activity presence for new guilds | | 1 | ON_FOR_LARGE_GUILDS | Restrict activity presence for large new guilds by default | | 2 | ON | Restrict activity presence for all new guilds by default |
Guilds Leaderboard Opt Out Default
| Value | Name | Description | | ----- | ------------------ | -------------------------------------------------------- | | 0 | OFF_FOR_NEW_GUILDS | Do not opt out of leaderboards for new guilds by default | | 1 | ON_FOR_NEW_GUILDS | Opt out of leaderboards for new guilds by default |
Slayer SDK Receive In Game DMs
| Value | Name | Description | | ----- | --------------- | ---------------------------------------------- | | 0 | UNSET | Default unset value (equates to ALL
) | | 1 | ALL | Receive all in-game DMs | | 2 | USERS_WITH_GAME | Receive DMs only from users with the same game | | 3 | NONE | Do not receive any in-game DMs |
Debug Settings Structure
| Field | Type | Description | | ---------------------------- | --------- | ------------------------------------------------------------- | | rtc_panel_show_voice_states? | BoolValue | Whether to show voice states in the RTC panel (default false) |
Game Library Settings Structure
| Field | Type | Description | | ---------------------------- | --------- | ---------------------------------------------------------------- | | install_shortcut_desktop? | BoolValue | Whether to install desktop shortcuts for games (default false) | | install_shortcut_start_menu? | BoolValue | Whether to install start menu shortcuts for games (default true) | | disable_games_tab? | BoolValue | Whether to disable the games tab (default false) |
Status Settings Structure
| Field | Type | Description | | -------------------- | ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | | status? | StringValue | The overall status of the user, used to sync presence across clients (default unknown
) | | custom_status? | Custom Status | The overall custom status of the user, used to sync presence across clients | | show_current_game? | BoolValue | Whether to display the currently active game in user presence (default true) | | status_expires_at_ms | fixed64 | Unix timestamp (in milliseconds) of when the status expires |
Custom Status Structure
| Field | Type | Description | | ------------- | ------- | ------------------------------------------------------------------------------- | | text | string | The custom status text | | emoji_id | fixed64 | The ID of a guild's custom emoji | | emoji_name | string | The unicode character of the emoji | | expires_at_ms | fixed64 | Timestamp (in milliseconds) of when the custom status expires | | created_at_ms | fixed64 | Timestamp (in milliseconds) of when the custom status was created | | label | string | The type of custom status label |
Localization Settings Structure
| Field | Type | Description | | ---------------- | ----------- | ------------------------------------------------------------------------------ | | locale? | StringValue | The language option chosen by the user (default en-US
) | | timezone_offset? | Int32Value | The timezone offset from UTC to use (in minutes) |
Appearance Settings Structure
| Field | Type | Description | | ---------------------------------- | ---------------------------------------------------------------- | ------------------------------------------------------------------ | | theme | theme enum | The user's client theme | | developer_mode | boolean | Whether to enable developer mode in-client (default false) | | client_theme_settings? | client theme settings object | Custom theme settings | | mobile_redesign_disabled | boolean | Whether the mobile redesign is disabled (default false) | | channel_list_layout? | StringValue | Channel list layout setting | | message_previews? | StringValue | Message preview setting | | search_result_exact_count_enabled? | BoolValue | Whether to show exact counts in tabs search results (default true) | | timestamp_hour_cycle | timestamp hour cycle enum | Timestamp clock cycle format setting | | happening_now_cards_disabled? | BoolValue | Whether Happening Now cards are disabled (default false) | | launch_pad_mode | launch pad mode enum | Mobile Launch Pad behavior | | ui_density | UI density enum | UI density setting | | swipe_right_to_left_mode | swipe right to left mode enum | Mobile swipe right-to-left behavior |
Theme
| Value | Name | Description | | ----- | -------- | --------------------------------------- | | 0 | UNSET | Default unset value (equates to DARK
) | | 1 | DARK | Dark theme | | 2 | LIGHT | Light theme | | 3 | DARKER | Darker theme | | 4 | MIDNIGHT | Midnight theme |
Client Theme Settings Structure
| Field | Type | Description | | ------------------------------------------- | ----------- | ---------------------------------------- | | primary_color? (deprecated) | UInt32Value | The primary color of the client theme | | background_gradient_preset_id? | UInt32Value | The ID of the background gradient preset | | background_gradient_angle? (deprecated) | FloatValue | The angle of the background gradient |
Timestamp Hour Cycle
| Value | Name | Description | | ----- | ---- | -------------------------------------------------- | | 0 | AUTO | Automatically determine hour cycle based on locale | | 1 | H12 | Use 12-hour clock | | 2 | H23 | Use 24-hour clock |
Launch Pad Mode
| Value | Name | Description | | ----- | ------------------- | ------------------------------------- | | 0 | DISABLED | Disable mobile launch pad | | 1 | GESTURE_FULL_SCREEN | Enable full-screen gesture launch pad | | 2 | GESTURE_RIGHT_EDGE | Enable right-edge gesture launch pad | | 3 | PULL_TAB | Enable pull-tab launch pad |
UI Density
| Value | Name | Description | | ----- | ---------- | --------------------- | | 0 | UNSET | Default unset value | | 1 | COMPACT | Compact UI density | | 2 | COZY | Cozy UI density | | 3 | RESPONSIVE | Responsive UI density |
Swipe Right To Left Mode
| Value | Name | Description | | ----- | --------------- | ------------------------------------- | | 0 | UNSET | Default unset value (default REPLY
) | | 1 | CHANNEL_DETAILS | Swipe to open channel details | | 2 | REPLY | Swipe to reply to messages |
Guild Folders Structure
| Field | Type | Description | | -------------------------------- | ----------------------------------------------------- | ---------------------------------- | | folders ^1^ | array[guild folder object] | Guild folders | | guild_positions (deprecated) | array[fixed64] | Positions of guilds in the sidebar |
^1^ This will include guilds that are not in a folder as an anonymous folder with a single entry.
Guild Folder Structure
| Field | Type | Description | | --------- | -------------- | ----------------------------------- | | guild_ids | array[fixed64] | The IDs of the guilds in the folder | | id? | Int64Value | The ID of the folder | | name? | StringValue | The name of the folder | | color? | UInt64Value | Hex color of the folder |
Favorites Structure
| Field | Type | Description | | ----------------- | -------------------------------------------------------------------- | --------------------------- | | favorite_channels | map[fixed64, favorite channel object] | Map of favorite channels | | muted | boolean | Whether favorites are muted |
Favorite Channel Structure
| Field | Type | Description | | --------- | ----------------------------------------------- | --------------------------------- | | nickname | string | Nickname of the favorite channel | | type | favorite channel type | Type of the favorite channel | | position | uint32 | Position of the favorite channel | | parent_id | fixed64 | Parent ID of the favorite channel |
Favorite Channel Type
| Value | Description | | ------------------ | -------------------------- | | UNSET | Default unset value | | REFERENCE_ORIGINAL | References a real channel | | CATEGORY | Contains favorite channels |
Audio Settings Structure
| Field | Type | Description | | ------ | -------------------------------------------------------------- | --------------------------------------- | | user | map[fixed64, audio context object] | Audio context settings for users | | stream | map[fixed64, audio context object] | Audio context settings for user streams |
Audio Context Structure
| Field | Type | Description | | ---------------- | ------- | ---------------------------------------------------------------------- | | muted | boolean | Whether the audio is muted | | volume | float | Volume level of the user or stream (0-200) | | modified_at | fixed64 | Unix timestamp (in milliseconds) of when the setting was last modified | | soundboard_muted | boolean | Whether the soundboard is muted (user only) |
Communities Settings Structure
| Field | Type | Description | | --------------------------------------- | --------- | --------------------------------------------------------------- | | disable_home_auto_nav? (deprecated) | BoolValue | Whether to disable automatic navigation to Home (default false) |
Broadcast Settings Structure
| Field | Type | Description | | ----------------- | -------------- | ---------------------------------------------------------- | | allow_friends? | BoolValue | Whether friends are allowed to broadcast to you | | allowed_guild_ids | array[fixed64] | The IDs of guilds where broadcasting is allowed | | allowed_user_ids | array[fixed64] | The IDs of users who are allowed to broadcast | | auto_broadcast? | BoolValue | Whether to automatically start broadcasting upon streaming |
Clips Settings Structure
| Field | Type | Description | | ---------------------- | --------- | ------------------------------------------------------------------ | | allow_voice_recording? | BoolValue | Whether to allow your voice to be recorded in Clips (default true) |
For Later Settings Structure
| Field | Type | Description | | ----------- | ------------------------------------ | --------------------- | | current_tab | for later tab enum | For later tab setting |
For Later Tab
| Value | Name | Description | | ----- | ----------- | -------------------------------------------- | | 0 | UNSPECIFIED | Default unset value (equates to ALL
) | | 1 | ALL | Show all items in the For Later section | | 2 | BOOKMARKS | Show only bookmarks in the For Later section | | 3 | REMINDERS | Show only reminders in the For Later section |
Safety Settings Structure
| Field | Type | Description | | --------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------------------------------------- | | safety_settings_preset | safety settings preset type | Preset type for safety settings | | ignore_profile_speedbump_disabled | boolean | Whether to hide the warning shown when viewing a profile you have blocked (default false) |
Safety Settings Preset Type
| Value | Name | Description | | ----- | -------- | ------------------------ | | 0 | UNSET | Default unset value | | 1 | BALANCED | Balanced safety settings | | 2 | STRICT | Strict safety settings | | 3 | RELAXED | Relaxed safety settings | | 4 | CUSTOM | Custom safety settings |
ICYMI Settings Structure
| Field | Type | Description | | ----------------- | ------- | --------------------------------------------------- | | feed_generated_at | fixed64 | Unix timestamp (in milliseconds) of feed generation |
All Application Settings Structure
| Field | Type | Description | | ------------ | ---------------------------------------------------------------------------- | ----------------------------- | | app_settings | map[fixed64, application settings object] | Application-specific settings |
Application Settings Structure
| Field | Type | Description | | ---------------- | ------------------------------------------------------------- | ------------------------------- | | app_dm_settings? | application DM settings | DM settings for the application |
Application DM Settings Structure
| Field | Type | Description | | ----------- | ------- | ------------------------------------------------------------ | | dm_disabled | boolean | Whether DMs are disabled for the application (default false) |
Frecency User Settings Object
Serialized as discord_protos.discord_users.v1.FrecencyUserSettings
.
Frecency User Settings Structure
| Field | Type | Description | | ---------------------------- | ------------------------------------------------------------------------------ | --------------------------------------------- | | versions | versions object | Version information for the protocol and data | | favorite_gifs | favorite gifs object | Favorite GIFs storage | | favorite_stickers | favorite stickers object | Favorite stickers storage | | sticker_frecency | sticker frecency object | Sticker frecency storage | | favorite_emojis | favorite emojis object | Favorite emojis settings | | emoji_frecency | emoji frecency object | Emoji frecency storage | | application_command_frecency | application command frecency object | Application command frecency storage | | favorite_soundboard_sounds | favorite soundboard sounds object | Favorite soundboard sounds storage | | application_frecency | application frecency object | Application frecency storage | | heard_sound_frecency | heard sound frecency object | Heard soundboard sound frecency storage | | played_sound_frecency | played sound frecency object | Played soundboard sound frecency storage | | guild_and_channel_frecency | guild and channel frecency object | Guild and channel frecency storage | | emoji_reaction_frecency | emoji reaction frecency object | Emoji reaction frecency storage |
Frecency Item Structure
| Field | Type | Description | | ----------- | ------------- | ---------------------------------------------------------------------- | | total_uses | uint32 | Total uses of the item | | recent_uses | array[uint64] | Unix timestamps (in milliseconds) representing recent uses of the item | | frecency | int32 | Frecency score of the item, or -1
if not applicable | | score | int32 | Weighted score of the item |
Favorite GIFs Structure
| Field | Type | Description | | ------------ | ----------------------------------------------------------- | --------------------------------------------- | | gifs | map[string, favorite GIF object] | Map of GIF URLs to favorite GIFs | | hide_tooltip | boolean | Whether to hide the tooltip for favorite GIFs |
Favorite GIF Structure
| Field | Type | Description | | ------ | -------------------------- | ---------------------------------------- | | format | GIF type enum | The type of the GIF (IMAGE
or VIDEO
) | | src | string | The media URL of the GIF | | width | uint32 | The width of the GIF | | height | uint32 | The height of the GIF | | order | uint32 | Order of the GIF in the list |
GIF Type
| Value | Name | Description | | ----- | ----- | ------------- | | 0 | NONE | Default unset | | 1 | IMAGE | Image GIF | | 2 | VIDEO | Video GIF |
Favorite Stickers Structure
| Field | Type | Description | | ----------- | -------------- | --------------------------------------- | | sticker_ids | array[fixed64] | The IDs of the user's favorite stickers |
Sticker Frecency Structure
| Field | Type | Description | | -------- | -------------------------------------------------------------- | ----------------------------- | | stickers | map[fixed64, frecency item object] | Map of sticker frecency items |
Favorite Emojis Structure
| Field | Type | Description | | ------ | ------------- | --------------------------------------------------------------------------------------------------- | | emojis | array[string] | The user's favorite emoji, represented as snowflake IDs or friendly names (e.g. skull_crossbones
) |
Emoji Frecency Structure
| Field | Type | Description | | ------ | ------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | | emojis | map[string, frecency item object] | Frecenct used emoji, represented as snowflake IDs or friendly names (e.g. skull_crossbones
) |
Application Command Frecency Structure
| Field | Type | Description | | -------------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | application_commands | map[string, frecency item object] | Frecent application commands, represented as snowflake command IDs with optional null-joined command names and colon-joined guild IDs (e.g. 1221148400637050941\u0000set:550327071407079444
) |
Favorite Soundboard Sounds Structure
| Field | Type | Description | | --------- | -------------- | ------------------------------------------------ | | sound_ids | array[fixed64] | The IDs of the user's favorite soundboard sounds |
Application Frecency Structure
| Field | Type | Description | | ------------ | ------------------------------------------------------------- | -------------------------------------------------- | | applications | map[string, frecency item object] | Frecent applications, represented as snowflake IDs |
Heard Sound Frecency Structure
| Field | Type | Description | | ------------ | ------------------------------------------------------------- | ------------------------------------------------------------- | | heard_sounds | map[string, frecency item object] | Frecent heard soundboard sounds, represented as snowflake IDs |
Played Sound Frecency Structure
| Field | Type | Description | | ------------- | ------------------------------------------------------------- | -------------------------------------------------------------- | | played_sounds | map[string, frecency item object] | Frecent played soundboard sounds, represented as snowflake IDs |
Guild and Channel Frecency Structure
| Field | Type | Description | | ------------------ | -------------------------------------------------------------- | ---------------------- | | guild_and_channels | map[fixed64, frecency item object] | Frecent guild channels |
Emoji Reaction Frecency Structure
| Field | Type | Description | | ------ | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | | emojis | map[string, frecency item object] | Frecent used reactions, represented as snowflake IDs or friendly names (e.g. skull_crossbones
) |
Endpoints
📋 HEADER: Get User Settings Proto
Returns the requester's user settings protobuf for the specified type.
Response Body
| Field | Type | Description | | -------- | ------ | ----------------------------------------------------- | | settings | string | The base 64-encoded serialized user settings protobuf |
📋 HEADER: Modify User Settings Proto
Modifies the requester's user settings protobuf for the specified type. Fires a User Settings Proto Update and User Settings Update Gateway event.
⚠️ ALERTA:
When updating protobuf user settings, the entire top-level field being modified must be sent, or any subfields not sent will be reset to their default values.
For example, if updating PreloadedUserSettings.AppearanceSettings.developer_mode
, the entire PreloadedUserSettings.AppearanceSettings
field must be sent, or everything in it will be reset.
Unchanged top-level fields can be omitted from the request.
⚠️ ALERTA:
This endpoint is ratelimited heavily. Updates should be batched together and sent at intervals.
Infrequent actions do not need a delay. Frequent actions should be delayed by 10 seconds and batched. Automated actions (such as migrations or frecency updates) should be delayed by 30 seconds and batched. Daily actions (things that change often and are not meaningful, such as emoji frencency) should be delayed by 1 day and batched.
JSON Params
| Field | Type | Description | | -------------------------- | ------- | ------------------------------------------------------------------- | | settings | string | The base-64 encoded serialized user settings protobuf modifications | | required_data_version? ^1^ | integer | The required data version of the proto |
^1^ When making offline edits, the required data version of the proto should be set to the last known version. This ensures that the client doesn't overwrite newer edits made on a different client on edit.
Response Body
| Field | Type | Description | | ------------ | ------- | ----------------------------------------------------------------------------------------- | | settings | string | The base-64 encoded serialized user settings protobuf | | out_of_date? | boolean | Whether the user settings update was discarded due to an outdated required_data_version
|