> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pup.run/llms.txt
> Use this file to discover all available pages before exploring further.

# Timeouts, mutes and bans

> Choose a member restriction and understand how it ends.

Use the restriction that fits the situation. pup checks your permissions, protected-member rules and Discord hierarchy before applying it.

| Command | Effect | Ends when |
| - | - | - |
| `/timeout` | Discord timeout | Its duration expires, or `/untimeout` |
| `/mute` | Temporary mute-role restriction | Its scheduled reversal runs |
| `/hardmute` | Persistent role restriction | Staff use `/unrestrict` |
| `/kick` | Removes the member | They rejoin |
| `/ban` | Bans the user | Staff unban them |
| `/tempban` | Bans the user temporarily | Its scheduled reversal runs |
| `/softban` | Bans and then unbans to remove recent messages | The immediate unban completes |

```text wrap theme={null}
/timeout user:@Alex duration:10m reason:Repeated disruption.
/untimeout user:@Alex
/ban user:@Alex delete-history:0 reason:Repeated disruption.
```

Reasons are optional. Read [Command reference](https://docs.pup.run/commands.md) for complete inputs and [Cases](https://docs.pup.run/cases.md) for action results. Check the case after queued work finishes.

## Configure the mute role

Open **Moderation → Settings**, choose the member restriction role and save before using **Preview configured role**. The preview models `@everyone` and that role's text, voice, thread and application-command access. Other roles, private threads and command policies can change a member's actual access.

## Persistent restrictions

```text wrap theme={null}
/hardmute user:@Alex reason:Staff review is needed before restoring access.
/unrestrict user:@Alex
```

Use `/timeout` for a temporary mute. For a mute without an expiry, `/hardmute`
adds the configured mute role and temporarily removes the member’s other roles.
Discord-managed roles stay assigned. Both commands require moderation permission.

Choose the mute role in the server’s moderation settings and check its channel
permissions. Managed roles and member-specific channel permissions can still
allow communication. Hardmute does not change channel permissions or remove
roles granted later.

`/unrestrict` restores the saved roles, then removes the original mute role.
Roles granted since the mute stay assigned. Deleted roles are not recreated.
For older mutes that only added a mute role, `/unrestrict` only removes that role.

pup stops if a role it needs to restore has different permissions, is no longer
manageable, or the member left and rejoined. Review the member’s roles before
retrying. An active quarantine or temporary role mute must be handled separately.

If an action stops partway through, its case shows the failure. Retry that case
to finish, or use `/unrestrict` to undo a failed hardmute. pup keeps the saved
roles for recovery. Check the case and the member’s roles before trying again
when Discord has not confirmed the result.

## Default ban message deletion

In **Moderation → Settings**, save **Default ban message deletion**. It starts at **1 day (24 hours)** and accepts whole days from **0** through **7**. Choose **Don't delete messages** to preserve messages.

Ban, tempban, massban and softban use this default when `delete-history` is omitted, including prefix commands. An explicit value overrides it; `delete-history:0` preserves messages. Changing the default affects new commands. Queued bans keep their chosen window; automated protections use their own response settings.

> [!WARNING]
>
> Deleting message history is permanent. An unban cannot restore it.

## Scheduled reversals

Use [Activity → Scheduled actions](https://docs.pup.run/activity.md) to run a reversal now, change its time or cancel it. Cancelling leaves the restriction in place. A failed or partial action stays visible on its case for retry.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.