Skip to main content
Moderation commands provide comprehensive tools for maintaining order in your Discord server. All actions are logged with unique Action IDs and can be managed through the moderation system.

/ban

Permanently ban a user from the server.
user
User
required
The user to ban from the server
reason
String
Reason for the ban (defaults to “Heretical defiance of Alteruism”)

Behavior

  • Sends a DM to the banned user with ban details
  • Creates a moderation log entry with Action ID (B#)
  • Displays an embed with executor, Action ID, and reason
  • Special easter egg for specific user IDs

Example Usage

// From ban.ts:70
await interaction.guild.members.ban(targetUser, { reason });

const entryId = await ModerationLogger.addEntry({
  type: "ban",
  userId: targetUser.id,
  userTag: targetUser.tag,
  moderatorId: executor.id,
  moderatorTag: executor.user.tag,
  reason: reason,
  guildId: interaction.guild.id,
});
Ban actions are permanent and require administrator permissions. The target will be completely removed from the server and prevented from rejoining.

/kick

Remove a user from the server (they can rejoin with a new invite).
user
User
required
The user to kick from the server
reason
String
Reason for the kick (defaults to “Defiance of sacred Alteruism”)

Behavior

  • Sends a DM to the kicked user before removal
  • Creates a moderation log entry with Action ID (K#)
  • User can rejoin with a new invite link
  • Displays confirmation embed with Action ID

Example Usage

// From kick.ts:60
await targetMember.kick(reason);

const entryId = await ModerationLogger.addEntry({
  type: "kick",
  userId: targetUser.id,
  userTag: targetUser.tag,
  moderatorId: executor.id,
  moderatorTag: executor.user.tag,
  reason: reason,
  guildId: interaction.guild.id,
});

/timeout

Temporarily mute a user for a specified duration.
user
User
required
The user to timeout
days
Integer
Number of days (0-28)
hours
Integer
Number of hours (0-23)
minutes
Integer
Number of minutes (0-59)
reason
String
Reason for the timeout (defaults to “Violation of sacred Alteruism”)

Duration Rules

  • At least 1 minute required
  • Maximum: 40,320 minutes (28 days)
  • Accepts any combination of days, hours, and minutes

Behavior

// From timeout.ts:59
const totalMinutes = days * 24 * 60 + hours * 60 + minutes;

// Convert to milliseconds for Discord API
await targetMember.timeout(totalMinutes * 60 * 1000, reason);

Example Usage

/timeout user:@User hours:1 reason:Spamming
The timeout embed displays both human-readable duration (“1 day, 12 hours, 30 minutes”) and total minutes for clarity.

/warn

Issue a formal warning to a user.
user
User
required
The user to warn
reason
String
Reason for the warning (defaults to “Straying from the path of Alteruism”)

Behavior

  • Creates a warning log entry with Action ID (W#)
  • Retrieves and displays total warning count for user
  • Sends DM to warned user with details
  • Tracks warning history per guild

Warning Tracking

// From warn.ts:54-58
const userWarns = await ModerationLogger.getUserWarns(
  targetUser.id,
  interaction.guild.id,
);
const warnCount = userWarns.length;
The warning count is displayed in the embed and included in the DM sent to the user.

Example Response

DIVINE WARNING ISSUED

@User hath received a warning from the holy shaper!

Messenger of Judgement: ModeratorName
Warning ID: W123
Total Warnings: 3
Reason: Inappropriate language
While warnings don’t directly restrict users, they create a permanent record that moderators can review. Multiple warnings may lead to more severe actions.

/removesin

Revoke a moderation action and undo punishment where possible.
entryid
String
required
The Action ID to revoke (W1, K1, B1, T1, C1, etc.)

Supported Action Types

Removes active timeout if user is still muted. If timeout already expired, records removal but no action taken.
Unbans the user if they are currently banned, allowing them to rejoin with an invite.
Records removal but cannot undo (user must be manually reinvited).
Removes warning from user’s record.
Records removal but cannot restore deleted messages.

Example Implementation

// From removesin.ts:53-66
switch (entry.type) {
  case "timeout":
    const timeoutMember = await interaction.guild.members.fetch(entry.userId);
    if (timeoutMember.isCommunicationDisabled()) {
      await timeoutMember.timeout(
        null,
        `Timeout removed by ${executor.user.tag} (Mercy granted for ${entryId})`
      );
      undoResult = "Timeout lifted";
    } else {
      undoResult = "Timeout already expired";
    }
    break;
  // ... other cases
}

Response Format

The command displays:
  • Original transgression type and target
  • Executor of the removal
  • Punishment status (lifted, expired, cannot undo, etc.)
  • Sends DM to affected user notifying them of absolution
Action IDs are case-insensitive. You can use “w1”, “W1”, “k5”, or “K5” interchangeably.

Admin Commands

The following commands require elevated permissions and are restricted to administrators.

/giveaway

Create interactive giveaways with automatic winner selection.
prize
String
required
The prize to be given away
days
Integer
Duration in days (0-7)
hours
Integer
Duration in hours (0-168)
minutes
Integer
Duration in minutes (0-10080)
winners
Integer
Number of winners to select (defaults to 1)
Features:
  • Participants enter by clicking a button
  • Automatic countdown timer
  • Random winner selection at end
  • Cannot enter multiple times
  • Displays participant count
Duration: Combines days, hours, and minutes. If no duration specified, defaults to appropriate time.

/webhook

Manage bot webhooks for automated messaging.

Subcommands

create
channel
Channel
required
Channel to create webhook in
name
String
Custom name for the webhook (optional)
delete
name
String
Name of the webhook to delete
test
message
String
Test message to send through webhook
list
  • Lists all webhooks in the server
// From webhook.ts:8-50
export const data = new SlashCommandBuilder()
  .setName("webhook")
  .setDescription("Manage the bot's webhooks for automated messaging")
  .addSubcommand((subcommand) =>
    subcommand
      .setName("create")
      .setDescription("Create a new webhook in a channel")
  )

/reactionrole

Manage reaction role rules for automatic role assignment.

Subcommands

add Create a new reaction role rule.
message-id
String
required
ID of the message to watch
emoji
String
required
Emoji to react with (Unicode or custom :emoji_name:)
role
Role
required
Role to assign when users react
unreact
Boolean
Remove reaction after adding role (defaults to false)
remove Delete an existing reaction role rule.
message-id
String
required
Message ID of the rule to remove
emoji
String
required
Emoji of the rule to remove
list Display all active reaction role rules in the server. Features:
  • Supports both Unicode emoji (🎮) and custom emoji (:custom:)
  • Optional automatic unreact after role assignment
  • Rules persist across bot restarts
  • Stored in JSON per guild

/interchat

Create and manage cross-server chat pools using webhooks.

Subcommands

create Create a new inter-server chat pool.
poolname
String
required
Name for the chat pool
Returns a UUID that other servers use to join. join Join an existing chat pool.
poolid
String
required
UUID of the pool to join
leave Leave the current chat pool. info Display information about the current pool. rename Rename the current server’s display name in the pool.
newname
String
required
New display name for your server
delete Delete the chat pool (only pool creator can use this). Features:
  • Webhook-based message relaying
  • Preserves message attachments and embeds
  • Shows server origin for each message
  • Reply context maintained across servers
  • UUID-based pool identification
// From interServerChat.ts
- Pools stored in JSON
- Each server can only be in one pool
- Messages relayed via webhooks for seamless appearance

Sever the link between a Discord account and Fandom wiki account (admin only).
user
User
required
The Discord user to unlink from Fandom
Effects:
  • Removes link from database
  • Removes all Fandom-granted roles:
    • Staff roles (Thread Moderator, Content Moderator, Sysop, Bureaucrat)
    • Linked role
    • Staff parent role
    • Edit count roles (250+, 1000+)
    • Top Contributors role
Confirmation:
  • Requires button confirmation within 60 seconds
  • Shows which roles will be removed
  • Irreversible once confirmed
This is an administrative action. Only use this for legitimate reasons such as account security or user requests. The user will need to re-link their account via /link to restore wiki integration.
Unlike /link which users run themselves, /removelink is admin-only and used for moderation or account management purposes.

Build docs developers (and LLMs) love