Skip to content

API & Configuration

API & Configuration

Ranks

Location: Handler > Ranks

Assign custom tags and colors to players based on their UserId or Group Rank.

Ranks.new()
    :forUser(123456789) -- userId or {userId, userId...}
    :setTag("VIP") -- tag name
    :setTagColor(Color3.fromRGB(255, 0, 255)) -- tag color
    :setNameColor(Color3.fromRGB(0, 255, 255)) -- main message color
    :register() -- register

Channels

Location: Handler > Channels

Create custom chat channels with flexible access controls.

Channel.new()
    :setName("General")
    :setAccess("everyone")       -- "everyone" | "friends" | UserId | {UserId, ...}
    :setRemovable(false)
    :setTabColor(Color3.new(1, 0, 0))
    :register(onChannelSwitch)   -- Must be LAST

Access Options:

  • "everyone" - All players
  • "friends" - Friends only
  • UserId - Single user
  • {UserId, ...} - Multiple users

Commands

Location: Handler > Commands

Create custom chat commands with aliases and descriptions.

Command.new()
    :setName("help")
    :setAliases({"?"})
    :setDescription("Show available commands")
    :bindAction(function(args, uiRefs)
        _G.Message.new()
            :setMessage("Commands: /w, /clear, /console, /help")
            :send()
        return true
    end)
    :register()                  -- Must be LAST

System Messages

Location: Handler > SystemMessages

Send styled system messages to any channel.

local Message = _G.Message

Message.new()
    :setSender("NovaChat")
    :setNameColor(Color3.fromRGB(255, 215, 0))
    :setBodyColor(Color3.fromRGB(255, 215, 0))
    :setMessage('<font color="#d4d4d4">Welcome to the server!</font>')
    :setChannel("General")
    :setCore(true)               -- Survives /clear
    :setLifetime(5)              --d Auto-remove after 5 seconds
    :send()                      -- Must be LAST

Configuration

Location: Handler > Data > Config

You can edit chat using configurations.

local config = {
    NovaChatEnabled = true, -- If false, disables NovaChat entirely

    CoreChatEnabled = true, -- If false, disables original ROBLOX chat entirely
    ChannelsEnabled = true, -- If false, disables all NovaChat channels
    BubbleChatEnabled = true, -- If false, disables bubble chat
    MarkdownEnabled = true, -- If false, disables markdown
    RanksEnabled = true, -- If false, disables ranks
    VerifiedBadgeEnabled = true, -- If false, disables verified badges
    PremiumBadgeEnabled = true, -- If false, disables premium badges
    CoreBridgeEnabled = true, -- If false, disables a "bridge" between NovaChat and the ROBLOX Core Chat
    AutoScrollEnabled = true, -- If false, disables autoscrolling when receiving messages

    AgeGroups = false, -- Requires Chat & Voice Groups API in: Experinece Settings > Communication > Enable Text & Voice Chat groups APIs
    RegionalRestrictions = false, -- If false, doesnt allow players from the restricted regions to chat 

    ProximityChat = false, -- If true, only allows players within a certain distance to chat (UNFINISHED)
    ProximityDistance = 30, -- Distance in studs for ProximityChat (UNFINISHED)

    SettingsEnabled = true, -- If false, disables the Settings UI 

    PlayerPrefix = "DN", -- DN: DisplayName, UN: Username, if DN, then shows displayname in chat, elseif UN, then shows username in chat.

    MentionHighlightEnabled = true, -- If true, highlights your name in chat messages
    MentionColor = "#FFD700", -- Hex color for mentions

    Highlights = {
        Mention = { Color = Color3.fromRGB(255, 170, 0), Transparency = 0.85, Pulse = true }, -- Mention highlight settings
        System = { Color = Color3.fromRGB(50, 50, 50), Transparency = 0.7, Pulse = false }, -- System message settings
        Admin = { Color = Color3.fromRGB(255, 0, 0), Transparency = 0.8, Pulse = true }, -- Admin message settings
        Team = { Color = Color3.fromRGB(0, 255, 100), Transparency = 0.9, Pulse = false }, -- Team message settings
    }, -- Highlights for different message types

    AntiFloodEnabled = true, -- If true, enables the anti-flood system

    -- Spam Settings
    FloodDecayTime = 4, -- Time while flooding
    MaxMessagesPerDecay = 4, -- Max messages per decay

    -- Timing
    FadeDelay = 5, -- Time in seconds for fading out
    TextFadeDelay = 25, -- Time in seconds for fading out the text
    BubbleLifetime = 15, -- Lifetime (in seconds) of bubbles

    BubbleHideDistance = 40, -- Studs. Beyond this text becomes "..."
    MaxViewDistance = 100,   -- Studs. Beyond this the bubble is invisible (Optional)

    -- official codes from core scripts
    VerifiedEmoji = utf8.char(0xE000), -- Verified Emoji, Dont change
    PremiumEmoji = utf8.char(0xE001), -- Premium Emoji, Dont change

    -- Visuals
    SystemColor = Color3.fromRGB(200, 200, 200), -- System messages color 
    WhisperColor = Color3.fromRGB(170, 0, 255), -- Whisper messages color
    ErrorColor = Color3.fromRGB(245, 50, 50), -- Error messages color
    CodeColor = "#FF7800", -- Code block color
    CodeFont = "Michroma", -- Code block font
    MaxBubbleWidth = 250, -- Max bubble width
}

return config