DEV Community

Meteo Studios
Meteo Studios

Posted on

Setting Up Discord Rich Presence for FiveM Servers: QBox, QBCore, and Custom servers

If you are building a FiveM roleplay server, Discord Rich Presence is one of those small details that makes a big difference. It replaces the generic "Playing FiveM" status with your server name, logo, and player count. Every player on your server passively advertises your brand to their entire Discord friends list.

The setup is straightforward but the implementation differs depending on your framework. Here is a quick breakdown of how it works across QBox, QBCore, and a custom config-based approach.

Creating the Discord Application

This part is framework-agnostic.

  1. Head to the Discord Developer Portal
  2. Create a new application. Name it your server name since this is what displays in the Discord status
  3. Copy the Application ID from General Information
  4. Go to Rich Presence > Art Assets and upload your server logo. Give it a key name like server_logo_large

Recommended image size is 1024x1024px. Discord takes a few minutes to process new assets.

That is the Discord side done. Now the server side.

QBox Implementation

QBox handles RPC through qbx_core/config/client.lua. The discord config block lives here:

-- qbx_core/config/client.lua
discord = {
    appId = 'YOUR_APPLICATION_ID',
    largeIcon = { icon = 'server_logo_large', text = 'My Server' },
    smallIcon = { icon = 'server_logo_small', text = 'FiveM' },
}
Enter fullscreen mode Exit fullscreen mode

Update the appId with your Application ID and the icon key names to match what you uploaded in the Developer Portal.

One thing to watch out for: if you update qbx_core, your config changes might get overwritten. Consider tracking your config changes separately or using a version control system.

Full QBox docs on this: docs.qbox.re/resources/qbx_core/discord

QBCore Implementation

QBCore handles Discord RPC through qb-smallresources. The config lives in qb-smallresources/config.lua:

-- qb-smallresources/config.lua
Config.Discord = {
    appId = 'YOUR_APPLICATION_ID',
    largeIcon = { icon = 'server_logo_large', text = 'My Server' },
    smallIcon = { icon = 'server_logo_small', text = 'FiveM' },
}
Enter fullscreen mode Exit fullscreen mode

Different file location from QBox but same structure. Update the Application ID and icon key names to match your Discord Developer Portal assets.

Config-Based Approach (Meteo Server)

At Meteo Studios we took a different approach with our server package. Instead of editing Lua files inside framework resources, Discord RPC is controlled through the same cfg file that handles all other server-wide settings:

# meteo.cfg
set meteo:discord_enabled true
set meteo:discord_player_count true
set meteo:discord_app_id "YOUR_APPLICATION_ID"
set meteo:discord_icon_large "server_logo_large"
set meteo:discord_icon_small "server_logo_small"
Enter fullscreen mode Exit fullscreen mode

The advantage here is that server owners never touch framework code. No risk of losing changes on updates. No hunting through Lua files. The same meteo.cfg file also controls the server name, currency symbol, speed unit, and other global settings across 100+ scripts.

We documented the full setup at docs.meteofivem.net.

The design philosophy behind this is simple: if a setting affects the entire server, it should live in one place. Not scattered across individual resource configs.

Gotchas That Will Save You Debugging Time

Client-side kill switch. FiveM has a setting that lets players disable Discord Rich Presence entirely. If you are testing and nothing shows up, check your FiveM client settings before debugging your server config. Settings > Game > Discord Rich Presence.

Case sensitive key names. If your art asset is named Server_Logo but your config says server_logo, it will not work. Match them exactly.

Application name is the display name. The name you gave your Discord application is what shows in the player's status. This is set in the Developer Portal, not your server config. If it says "test123" because you were experimenting, rename it.

Icon processing delay. New art assets take a few minutes to become available. Do not restart your server 30 seconds after uploading and assume it is broken.

Buttons. Most implementations support up to two clickable buttons in the rich presence. Link to your Discord invite and your website. This turns every player's status into a mini landing page for your server.

Is It Worth the 10 Minutes?

Quick math. 30 concurrent players, each with 100 Discord friends. That is 3,000 potential impressions of your server brand, every day, for free. No ad spend, no content creation, no social media grinding.

For 10 minutes of setup, the return is hard to beat.


If you are interested in how we handle server-wide configuration at scale, check out the Meteo Server documentation. We built the entire server around the idea that server owners should configure, not code.

I build custom FiveM servers and scripts at Meteo Studios. More at meteofivem.net.

Top comments (0)