FNLB Devs

Developer Portal

SDK

Category config

overrideCategoryConfig on start() replaces category settings for that run. The same keys are accepted as the optional overrides argument on addCategories, addBots, and setBots.

overrideCategoryConfig?: {
  all?: Partial<ICategoryConfig>;
  categories?: Record<string, Partial<ICategoryConfig>>;
  bots?: Record<string, Partial<ICategoryConfig>>;
}

Only set the keys you want to override. Unspecified keys keep the config pulled from FNLB, and defaults fill any gaps after that. Merge order (later wins): pulled config, then all, then categories[categoryId], then bots[botId]. Types and enums come from @fnlb-project/shared/types: ICategoryConfig, CategoryConfigPartyPrivacy, CategoryConfigStatusType, and the trigger types below. The start() option itself is StartConfig.overrideCategoryConfig. CategoryConfigPartyPrivacy is numeric: 0 public, 1 private. That is the dashboard enum. Live party privacy after the bot is in a lobby uses PartyPrivacy on bot.party.setPrivacy, documented in Bots and parties. One sets the saved config. The other patches the party the bot is in right now.

import FNLB from 'fnlb';
import { CategoryConfigPartyPrivacy, CategoryConfigStatusType } from '@fnlb-project/shared/types';

const fnlb = new FNLB();

await fnlb.start({
  token: 'FNLB_...',
  categories: ['category-id'],
  overrideCategoryConfig: {
    all: {
      acceptFriendRequests: false,
      privacy: CategoryConfigPartyPrivacy.Private,
      statusType: CategoryConfigStatusType.Online,
      statusText: ['Lobby bot']
    },
    bots: {
      'bot-id': {
        startOutfit: [{ id: 'CID_028_Athena_Commando_F' }]
      }
    }
  }
});

The same object can be passed as the second argument to addCategories, addBots, or setBots after start(). Those methods are covered on the Node.js SDK page. Overrides stored that way are removed when removeCategories or removeBots drops the id, or when setCategories or setBots replaces the list without that id.

General

KeyTypeDescription
searchLangsAPILocales[]Languages used when searching cosmetics.
platform('WIN' | 'MAC' | 'PSN' | 'XBL' | 'SWT' | 'SWT2' | 'IOS' | 'AND' | 'PS5' | 'XSX')[]Platform icon or icons.
privacyCategoryConfigPartyPrivacy (0 Public, 1 Private)Default party privacy.
prefixesstring[]Command prefixes.
statusTypeCategoryConfigStatusType (0 Auto, 1 Online, 2 Away)Online presence mode.
statusTextstring[]Rotating status messages.
statusIntervalnumberStatus rotation interval, in seconds.
levelnumber[]Cosmetic account level options.
bpLevelnumber[]Cosmetic battle pass level options.

User management

User entries are { id?: string; name?: string }.

KeyTypeDescription
extraOwnersICategoryConfigUser[]Extra users with full command access.
adminsICategoryConfigUser[]Admin users.
whitelistUsersICategoryConfigUser[]Whitelisted users.
blacklistUsersICategoryConfigUser[]Blacklisted or banned users.
excludedAutoAddFriendsICategoryConfigUser[]Users the bot will not auto-add as friends.
otherBotsICategoryConfigUser[]Foreign bots to ignore.

Limits and behavior

KeyTypeDescription
inviteTimeoutnumberRe-invite cooldown, in seconds.
maxBotsPerLobbynumberMax bots per party.
maxBotsPerLobbyWithOwnernumberMax bots when an owner is present.
maxBotsPerLobbyWithAdminnumberMax bots when an admin is present.
maxBotsPerLobbyWithWhitelistUsernumberMax bots when a whitelisted user is present.
allowMatchmakingbooleanAllow matchmaking.
leaveAfterMatchmakingbooleanLeave the party after matchmaking starts.
disableMatchmakingChecksbooleanDisable matchmaking cooldown checks.
disablePlaylistChecksbooleanAllow non-standard playlists.
disableJoinMessagesbooleanDisable join messages.
disableAutomaticMessagesbooleanDisable automatic messages.
acceptFriendRequestsbooleanAuto-accept friend requests.
sendFriendRequestOnJoinPartybooleanFriend party members when the bot joins.
sendFriendRequestOnMemberJoinPartybooleanFriend members when they join.
runCommandsWithoutPrefixbooleanAllow commands without a prefix.
setCosmeticsWithoutCommandsbooleanSet cosmetics by typing the name in party chat.
setCosmeticsWithPrefixbooleanSet cosmetics with a prefix, such as !floss.
acceptInvitesbooleanAuto-accept party invites and join requests.
startBannedBotsbooleanStart bots even if they are matchmaking-banned.

Triggers

KeyTypeDescription
triggersICategoryConfigTrigger[]Event, custom-command, or scheduled trigger trees.

Each trigger has a name, optional flags, and an actions tree. Actions can run commands, call functions, or use control-flow statements.

  • Event fires on a CategoryConfigTriggerEventType, such as a party member joining.
  • Custom command fires when a custom command string is used.
  • Scheduled fires on a cron-style interval.

Command restrictions

Values are command name arrays.

KeyTypeDescription
onlyOwnerCommandsstring[]Owner-only commands.
onlyAdminCommandsstring[]Admin and owner commands.
onlyWhitelistUsersCommandsstring[]Whitelist, admin, and owner commands.
onlyFriendsCommandsstring[]Friends-only commands.
onlyPartyMembersCommandsstring[]Party-member-only commands.
onlyWhisperCommandsstring[]Whisper and DM commands.

Cosmetics

Outfit, backpack, pickaxe, shoes, and sidekick slots use { id?: string; variants?: number[] }[]. Banner and banner color slots use { id?: string }[]. Emote slots (joinEmote, memberJoinEmote) accept emotes, emojis, or jam tracks. Backpack slots accept backpacks or pet carriers.

KeyWhen it applies
startOutfit, startBackpack, startPickaxe, startShoes, startSidekick, startBanner, startBannerColorBot start.
joinOutfit, joinBackpack, joinPickaxe, joinEmote, joinShoes, joinSidekick, joinBanner, joinBannerColorBot joins a party.
memberJoinOutfit, memberJoinBackpack, memberJoinPickaxe, memberJoinEmote, memberJoinShoes, memberJoinSidekick, memberJoinBanner, memberJoinBannerColorAnother member joins the party.

Changing a cosmetic on a bot that is already in a party is party.setOutfit and the other member methods, not these lists. See Bots and parties.

TopicWhere
Apply overrides at start()Node.js SDK
Change the include list while shards are runningNode.js SDK
Option typeStartConfig
Live party privacy and cosmeticsBots and parties