Make it yours

Presence text

Write the messages players show on their Discord profile.

Two presence profiles

Edit Config.Presence in config.lua. Players use one of two profiles:

ProfileShownLarge image
SelectionDuring the loading screen and the character menuYour logo
PlayingOnce a character is loadedThe character's photo
config.lua
Config.Presence = {
    ShowJob = false,
    ShowLocation = false,
    RefreshInterval = 15,
    RotationInterval = 10,

    Selection = {
        LargeImageText = '{server_name}',
        Messages = {
            'In character selection',
            '{player_count}/{max_players} players online',
        },
    },

    Playing = {
        LargeImageText = '{char_name}',
        Messages = {
            '{char_name}',
            '{char_name} | {job} - {job_grade}',
            'Near {street}, {zone}',
            '{player_count}/{max_players} players | ID {player_id}',
        },
    },

LargeImageText is shown when someone hovers over the large image.

Placeholders

Use these in messages, LargeImageText, SmallImage.Text and button labels:

PlaceholderShows
{server_name}Config.ServerName
{player_count}Players currently online
{max_players}Your sv_maxclients value
{player_id}The player's server ID
{char_name}Character first and last name
{job}Job label, only with ShowJob = true
{job_grade}Job grade label, only with ShowJob = true
{street}Current street, only with ShowLocation = true
{zone}Current area, such as Vinewood or Sandy Shores, only with ShowLocation = true

Showing jobs

The job is off by default, because it tells everyone who sees a player's Discord profile what their character does, including jobs such as police that players may prefer to keep in character.

config.lua
Config.Presence = {
    ShowJob = false,

While it is off, job and rank are never sent to Discord, and any message using {job} or {job_grade} is skipped, so the default {char_name} | {job} - {job_grade} message simply does not appear. Set it to true to show the job. Rename jobs only has an effect while it is on.

Showing where players are

Location is off by default, because it tells everyone who sees a player's Discord profile where that character is in the city.

config.lua
Config.Presence = {
    ShowLocation = false,

While it is off, street and zone are never sent to Discord, and any message using {street} or {zone} is skipped, so the default Near {street}, {zone} message simply does not appear. Set it to true to show location.

Rotation and refresh

  • When a profile has more than one message, they rotate every RotationInterval seconds. Set it to 0 to always show the first message.
  • The presence refreshes every RefreshInterval seconds (15 by default), so player count and, when they are on, job and location stay current. Character loads, job changes and new photos appear immediately.
  • Both intervals have a minimum of 5 seconds.
  • Text longer than 128 characters is shortened, which is Discord's limit.

Fallback text

When a value is not available, the matching fallback is shown instead:

config.lua
Fallbacks = {
    char_name = 'Unknown',
    job = 'Unemployed',
    job_grade = 'None',
    street = 'Unknown street',
    zone = 'San Andreas',
},

Rename jobs

Use JobLabels to show a different name for a job, using the job's internal name as the key:

config.lua
JobLabels = {
    unemployed = 'Civilian',
    police = 'LSPD',
},

Server name

Config.ServerName fills {server_name} and is used as the title of player notifications. The name next to "Playing" on Discord comes from your Discord application name instead.

Temporary messages

Other resources can show a temporary message, such as during a heist or a race, with the SetPresenceOverride export. See Exports & integrations.

Available

Wolfden Rich Presence

$5

Was this page helpful?
Made with care, by Wolfden.
© 2026 Wolfden StudiosBuilt for the stories you create.