> For the complete documentation index, see [llms.txt](https://mango-5m.gitbook.io/mango5m-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mango-5m.gitbook.io/mango5m-docs/resources/mango-admin/configuration/kick-and-ban-messages.md).

# Kick and Ban Messages

What a removed player reads, and what they see when they come back.

## The disconnect screen

`Config.Messages` builds what somebody reads on their way out: a heading, the reason, when it expires, who did it, the ban id, and where to appeal.

{% code title="shared/config/moderation.lua" %}

```lua
Config.Messages = {
    banned      = "You've Been Banned From The Server",
    kicked      = "You've Been Kicked From The Server",
    showAdmin   = true,      -- name the staff member
    appealUrl   = 'discord.gg/yourserver',
    appealLabel = 'Appeal at',
    showTime    = true,
}
```

{% endcode %}

Every ban carries a short sequential number — **Ban ID #0007** — that staff and players can quote at each other.

## It lands on their clipboard

The whole message — reason, who, when, ban id — is copied to the player's clipboard as they are removed. Somebody opening a Discord ticket can paste exactly what they saw instead of describing it from memory.

Turn it off with `Config.Messages.copyToClipboard = false`.

## When they come back

`Config.ReturnNotice` meets somebody on their next join after a kick or a ban: the screen blurs, a card explains what happened and why, and **Continue** stays dead for five seconds with a countdown so it cannot be clicked past.

{% code title="shared/config/moderation.lua" %}

```lua
Config.ReturnNotice = {
    enabled   = true,
    afterKick = true,
    afterBan  = true,
    seconds   = 5,
    withinDays = 30,
}
```

{% endcode %}

It says which offence this is — *3rd offence* — counting kicks and bans together across every identifier they hold, including bans your staff have since lifted.

{% hint style="info" %}
**With a multicharacter resource it waits for the character, not the player.** `playerSpawned` fires while somebody is still on the character selection camera, so the notice would land over the picker and be dismissed before they had chosen. It waits for your framework to say a character is actually in the world, with a fallback for servers running none of the listed ones.
{% endhint %}
