On this page
JavaScript API

db.user

User-scoped persistent storage — get, set, delete, list, find, and reset.

db.user stores values per Discord user. BDFD equivalent: $getUserVar / $setUserVar.

Guild context routing

When the script runs inside a guild (server channel, slash command, or component interaction), db.user.* automatically routes to guildMember scope — the same storage as db.guildMember.

// In a guild: writes to guildMember scope (user + guild composite key)
await db.user.set('xp', 50);

// Equivalent explicit call:
await db.guildMember.set('xp', 50);

In DMs or non-guild contexts, db.user.* uses global user scope. This matches BDFD behavior where user variables in servers are per-member.

Variable registration

Scoped keys must be registered in the Bot Creator variable panel before get returns stored values. set auto-creates the definition if missing.

Methods

await db.user.get(key, userId?)

Returns the stored value for key. When userId is omitted, uses the command author from context.

const coins = await db.user.get('coins');
const other = await db.user.get('coins', '123456789012345678');

await db.user.set(key, value, userId?)

Writes value for key. Value can be any JSON-serializable type.

await db.user.set('coins', 100);
await db.user.set('coins', 0, interaction.user.id);

await db.user.delete(key, userId?)

Removes the key for the user.

await db.user.list(key, order?, limit?, offset?, filter?)

Returns { id, value }[] sorted by key values. order is 'asc' or 'desc'.

When a filter function is provided, the runtime fetches up to 10,000 rows first, then filters client-side before applying offset and limit.

const leaderboard = await db.user.list('coins', 'desc', 10, 0);
const rich = await db.user.list('coins', 'desc', 10, 0, (e) => e.value > 100);

BDFD equivalent: $userLeaderboard / $globalUserLeaderboard.

await db.user.find(filter)

Returns { key, id, value }[] for all matching entries. Requires a filter function.

const matches = await db.user.find((entry) => entry.value > 500);

await db.user.reset(key)

Purges all stored values for key and removes the variable definition.

BDFD equivalent: $resetUserVar.