Skip to content

Events

Server events Asphyxia fires so your own resources can react to bans, strikes and detections.

Asphyxia fires a server event whenever something meaningful happens. Listen for them to post to your own Discord, notify staff in-game, sync a punishment to another system, or keep your own records.

All of these are server-side, and all are triggered locally — they’re for your resources, not for clients.

AddEventHandler("asphyxia:server:playerBanned", function(data)
    print(("%s was banned: %s"):format(data.playerName, data.reason))
end)

asphyxia:server:playerBanned

Fires when a player is banned, for any reason — a detection, an admin, the console, or one of your own scripts.

Field Type Description
banId string The new Ban ID
playerId number Their net ID
playerName string Their name
license string Their license
identifiers table Every identifier on record
reason string Why they were banned
details string Extra context
bannedBy string Who or what requested it
AddEventHandler("asphyxia:server:playerBanned", function(data)
    TriggerEvent("myserver:announce",
        ("%s was banned (%s). Ban ID: %s"):format(data.playerName, data.reason, data.banId))
end)

asphyxia:server:playerUnbanned

Fires when a single ban is lifted.

Field Type Description
banId string The ban that was lifted
reason string Why
revokedBy string Who lifted it

asphyxia:server:allPlayersUnbanned

Fires when every active ban is lifted at once via asphyxia unbanall.

Field Type Description
lifted number How many bans were lifted
reason string Why
revokedBy string Who did it

asphyxia:server:playerStriked

Fires on every strike, before any resulting ban.

Field Type Description
strikeId string The new Strike ID
playerId number Their net ID
playerName string Their name
license string Their license
reason string What they were struck for
description string? Extra detail
severity string low, medium or high
sessionCount number How many of this severity they have this session

sessionCount is useful for warning staff before a ban happens:

AddEventHandler("asphyxia:server:playerStriked", function(data)
    if data.severity == "high" and data.sessionCount >= 1 then
        TriggerEvent("myserver:staffAlert",
            ("%s is one strike from a ban (%s)"):format(data.playerName, data.reason))
    end
end)

asphyxia:server:detectionTriggered

Fires the moment a client detection is confirmed, before the resulting ban or strike. Whitelisted players never reach this event.

Field Type Description
playerId number Their net ID
playerName string Their name
detection string The detection name
detail string What was observed
strikeOnly boolean true if it strikes, false if it bans outright

asphyxia:server:riskScoreChanged

Fires when a player’s risk score changes.

Field Type Description
playerId number Their net ID
playerName string Their name
license string Their license
previous number The score before
current number The score after

asphyxia:server:playerWhitelisted

Fires when a detection whitelist is added.

Arguments are positional rather than a table:

AddEventHandler("asphyxia:server:playerWhitelisted",
    function(license, detection, expiresAt, grantedBy)
        print(("%s was exempted from %s by %s"):format(license, detection, grantedBy))
    end)

expiresAt is a Unix timestamp, or nil when it lasts until restart.

asphyxia:server:whitelistRemoved

Fires when a whitelist is lifted.

AddEventHandler("asphyxia:server:whitelistRemoved", function(license, detection)
    -- detection is nil when every exemption was cleared at once
end)

A worked example

Mirroring every punishment into your own Discord webhook:

local WEBHOOK = "https://discord.com/api/webhooks/..."

local function post(title, description, color)
    PerformHttpRequest(WEBHOOK, function() end, "POST", json.encode({
        embeds = { { title = title, description = description, color = color } },
    }), { ["Content-Type"] = "application/json" })
end

AddEventHandler("asphyxia:server:playerBanned", function(data)
    post("Player banned",
        ("**%s**\n%s\n`%s`"):format(data.playerName, data.reason, data.banId), 15548997)
end)

AddEventHandler("asphyxia:server:playerStriked", function(data)
    if data.severity ~= "high" then return end
    post("High-severity strike",
        ("**%s**\n%s"):format(data.playerName, data.reason), 16776960)
end)
Navigation

Type to search…

↑↓ navigate↵ selectEsc close