Skip to main content
Chat events allow resources to intercept messages, add suggestions, and control the chat UI.

Server Events

chatMessage

Fired when a player sends a chat message. Can be cancelled to prevent the message from being processed.
AddEventHandler('chatMessage', function(source, author, message)
    -- Handle or cancel message
    CancelEvent()  -- Prevents default processing
end)
Parameters:
source
number
Player server ID
author
string
Player name
message
string
Message content
Example:
-- Filter profanity
local bannedWords = { 'badword1', 'badword2' }

AddEventHandler('chatMessage', function(source, author, message)
    local lower = string.lower(message)

    for _, word in ipairs(bannedWords) do
        if string.find(lower, word) then
            CancelEvent()
            Chat.Send.System:Single(source, 'Message blocked: inappropriate language')
            return
        end
    end
end)

-- Log all chat messages
AddEventHandler('chatMessage', function(source, author, message)
    Logger:Info('Chat', string.format('%s: %s', author, message), {
        file = true
    })
end)

Client Events

chat:addMessage

Add a message to the chat UI.
TriggerClientEvent('chat:addMessage', source, type, message, author, time)
type
string
Message type (see Message Types below)
message
string
Message content
author
string
Sender name
time
number
Timestamp

chat:clearChat

Clear the chat for a specific player.
TriggerClientEvent('chat:clearChat', source)

chat:addSuggestion

Add a command suggestion to the player’s chat.
TriggerClientEvent('chat:addSuggestion', source, command, help, params)
command
string
Command name with / prefix
help
string
Help text
params
table
Parameter definitions

chat:removeSuggestion

Remove a command suggestion.
TriggerClientEvent('chat:removeSuggestion', source, command)

chat:resetSuggestions

Reset all command suggestions for a player.
TriggerClientEvent('chat:resetSuggestions', source)

Message Types

TypeDescriptionVisibility
serverServer messageAll players
systemSystem messageTarget player(s)
oocOut of characterAll players
broadcastBroadcast messageAll players
911Emergency callPolice/EMS on duty
311Non-emergency callPolice/EMS on duty
dispatchDispatch messageTarget player
testsTest resultTarget player

Middleware Events

Characters:Spawning

Chat refreshes available commands when a character spawns (priority 3).
-- Internally registered at priority 3
Middleware:Add('Characters:Spawning', function(source, character)
    -- Refreshes command suggestions based on job/permissions
end, 3)

Job:Server:DutyAdd / Job:Server:DutyRemove

Chat refreshes commands when duty status changes.
AddEventHandler('Job:Server:DutyAdd', function(source)
    Chat:Refresh:Commands(source)
end)

AddEventHandler('Job:Server:DutyRemove', function(source)
    Chat:Refresh:Commands(source)
end)

Next Steps

Chat - Exports

Command registration and messaging

Middleware API

Event middleware system

Jobs Events

Job-related events