# Management

## <mark style="color:blue;">Introduction</mark>

The Management configuration file (`management.json`) controls various server management features including logging, welcome/goodbye messages, auto-roles, auto-responses, suggestions, and other automation features.

***

## <mark style="color:blue;">Logs</mark>

The logging system records various server events to designated channels.

### <mark style="color:yellow;">types</mark>

**Type:** Object

Enable or disable specific log types. Each log type can be toggled individually.

```json
logs: {
    types: {
        channel_create: true,
        channel_delete: true,
        channel_update: true,
        emoji_create: true,
        emoji_delete: true,
        emoji_update: true,
        member_join: true,
        member_leave: true,
        member_update: true,
        member_roles_update: true,
        invite_create: true,
        invite_delete: true,
        invite_update: true,
        message_delete: true,
        message_update: true,
        role_create: true,
        role_delete: true,
        role_update: true,
        sticker_create: true,
        sticker_delete: true,
        sticker_update: true,
        thread_create: true,
        thread_delete: true,
        voice_state: true,
        command_execute: true,
        direct_message: true,
    },
}
```

Set any log type to `false` to disable that specific log.

***

### <mark style="color:yellow;">exclude\_message\_logs</mark>

**Type:** Array of Strings

List of channel IDs to exclude from message edit/delete logging.

```json
exclude_message_logs: [
    "123456789012345678",
    "234567890123456789",
]
```

Messages edited or deleted in these channels won't create log entries.

***

### <mark style="color:yellow;">exclude\_channel\_edit\_logs</mark>

**Type:** Array of Strings

List of channel IDs to exclude from channel edit logging.

```json
exclude_channel_edit_logs: []
```

***

## <mark style="color:blue;">Welcome Message</mark>

Configure automated welcome messages for new members.

### <mark style="color:yellow;">enabled</mark>

**Type:** Boolean

Enables or disables the welcome message feature.

```json
welcome_message: {
    enabled: true,
}
```

***

### <mark style="color:yellow;">display\_type</mark>

**Type:** String

Type of welcome message to send.

**Available Options:**

* `"IMAGE"` - Welcome card/image
* `"EMBED"` - Text embed (configured in lang.json)
* `"BOTH"` - Both image and embed

```json
display_type: "IMAGE"
```

***

### <mark style="color:yellow;">image</mark>

**Type:** Object

Configuration for the welcome image. Only applies when `display_type` is `"IMAGE"` or `"BOTH"`.

```json
image: {
    title: "Welcome %user%",
    description_text: "Member #%member_size%",
}
```

**Available Placeholders:**

* `%user%` - Username
* `%member_size%` - Total member count
* `%user_created%` - Account creation date
* `%user_joined%` - Server join date
* `%invited_by%` - Who invited them
* `%invites_by_invitor%` - Inviter's invite count

{% hint style="info" %}
**Custom Images:** To change the welcome background image, upload new images to `./logs/images/welcome/` directory.
{% endhint %}

***

### <mark style="color:yellow;">mention\_user</mark>

**Type:** Boolean

Whether to mention the user in their welcome message.

```json
mention_user: true
```

***

### <mark style="color:yellow;">emoji</mark>

**Type:** Object

Auto-react to welcome messages with an emoji.

```json
emoji: {
    enabled: false,
    emoji: "👋",
}
```

**enabled** - Whether emoji reactions are active\
**emoji** - Emoji to react with (Unicode or custom emoji ID)

***

### <mark style="color:yellow;">send\_after\_verification</mark>

**Type:** Boolean

Whether to wait until the user verifies before sending the welcome message.

```json
send_after_verification: false
```

**When `true`:** Welcome message only sent after verification\
**When `false`:** Welcome message sent immediately on join

***

### <mark style="color:yellow;">dm\_message</mark>

**Type:** Boolean

Whether to send an additional welcome message to the user's DMs.

```json
dm_message: false
```

DM message content is configured in the lang.json file.

***

## <mark style="color:blue;">Goodbye Message</mark>

Configure automated goodbye messages when members leave.

### <mark style="color:yellow;">enabled</mark>

**Type:** Boolean

Enables or disables the goodbye message feature.

```json
goodbye_message: {
    enabled: false,
}
```

***

### <mark style="color:yellow;">display\_type</mark>

**Type:** String

Type of goodbye message to send.

**Available Options:**

* `"IMAGE"` - Goodbye card/image
* `"EMBED"` - Text embed (configured in lang.json)
* `"BOTH"` - Both image and embed

```json
display_type: "IMAGE"
```

***

### <mark style="color:yellow;">image</mark>

**Type:** Object

Configuration for the goodbye image.

```json
image: {
    title: "Goodbye %user%",
    description_text: "Member #%member_size%",
}
```

**Available Placeholders:**

* `%user%` - Username
* `%member_size%` - Total member count

{% hint style="info" %}
**Custom Images:** To change the goodbye background image, upload new images to `./logs/images/goodbye/` directory.
{% endhint %}

***

### <mark style="color:yellow;">emoji</mark>

**Type:** Object

Auto-react to goodbye messages with an emoji.

```json
emoji: {
    enabled: false,
    emoji: "👋",
}
```

***

## <mark style="color:blue;">Auto Role</mark>

Automatically assign roles to new members when they join.

### <mark style="color:yellow;">enabled</mark>

**Type:** Boolean

Enables or disables auto-role assignment.

```json
auto_role: {
    enabled: false,
}
```

***

### <mark style="color:yellow;">roles\_to\_add</mark>

**Type:** Array of Strings

List of role IDs to automatically assign to new members.

```json
roles_to_add: ['804354038987882588', '123456789012345678']
```

Common use cases:

* Member role (if verification is disabled)
* Unverified role (if verification is enabled)
* Notification roles

***

## <mark style="color:blue;">Auto Thread Reaction</mark>

Automatically react to new threads in forum channels.

### <mark style="color:yellow;">enabled</mark>

**Type:** Boolean

Enables or disables auto thread reactions.

```json
auto_thread_reaction: {
    enabled: false,
}
```

***

### <mark style="color:yellow;">parent\_id</mark>

**Type:** String

Forum channel ID where this feature applies.

```json
parent_id: "1155463362377961615"
```

***

### <mark style="color:yellow;">emojis</mark>

**Type:** Array of Strings

List of emojis to react with on new threads.

```json
emojis: ["✅", "❌"]
```

Supports both Unicode emojis and custom emoji IDs.

***

## <mark style="color:blue;">Auto Message Response</mark>

Automatically respond to messages containing specific keywords/patterns.

### <mark style="color:yellow;">enabled</mark>

**Type:** Boolean

Enables or disables auto-response system.

```json
auto_message_response: {
    enabled: false,
}
```

***

### <mark style="color:yellow;">keywords</mark>

**Type:** Array of Objects

List of keyword patterns and their responses.

```json
keywords: [
    {
        regex: "ip|server address",
        predefined_message_id: "server_ip",
        auto_delete_after_seconds: 20,
        permission_role: "everyone",
        ticket_only: false,
    },
]
```

**regex** - Regular expression pattern to match (e.g., `"store"`, `"ip|server"`)\
**predefined\_message\_id** - ID of message created with `/sendmsg` command\
**auto\_delete\_after\_seconds** - Auto-delete response after X seconds, or `false` to keep permanently\
**permission\_role** - Permission level required (from permission config)\
**ticket\_only** - Whether response only triggers in ticket channels

{% hint style="info" %}
**Creating Responses:**

1. Use `/sendmsg` to create a custom message
2. Save it with a predefined message ID
3. Reference that ID in `predefined_message_id`
   {% endhint %}

***

## <mark style="color:blue;">Auto Crosspost</mark>

Automatically publish messages in announcement channels.

### <mark style="color:yellow;">enabled</mark>

**Type:** Boolean

Enables or disables auto-crossposting.

```json
auto_crosspost: {
    enabled: false,
}
```

***

### <mark style="color:yellow;">channel\_ids</mark>

**Type:** Array of Strings

List of announcement channel IDs to auto-publish.

```json
channel_ids: ["123456789012345678"]
```

**When empty:** All announcement channels are affected\
**When populated:** Only specified channels are affected

***

## <mark style="color:blue;">Scheduled Messages</mark>

Send predefined messages at scheduled times.

### <mark style="color:yellow;">enabled</mark>

**Type:** Boolean

Enables or disables scheduled messages.

```json
scheduled_messages: {
    enabled: false,
}
```

***

### <mark style="color:yellow;">messages</mark>

**Type:** Array of Objects

List of scheduled messages to send.

```json
messages: [
    {
        channel_id: "1266773588619427840",
        predefined_message_id: "daily_announcement",
        weekly: {
            monday: ["12:00", "18:00"],
            tuesday: ["14:22"],
            wednesday: ["14:00"],
            thursday: ["10:00"],
            friday: ["12:00"],
            saturday: ["20:00"],
            sunday: [],
        },
    },
]
```

**channel\_id** - Channel where message is sent\
**predefined\_message\_id** - ID of message created with `/sendmsg`\
**weekly** - Schedule with 24-hour time format in UTC timezone

{% hint style="warning" %}
**Important:** Use `"0:00"` for midnight, not `"24:00"`. Times are in your set timezone.
{% endhint %}

***

## <mark style="color:blue;">Suggestions</mark>

Configure the suggestion system behavior.

### <mark style="color:yellow;">disable\_suggestion\_threads</mark>

**Type:** Boolean

Whether to disable automatic thread creation for suggestions.

```json
suggestions: {
    disable_suggestion_threads: false,
}
```

***

### <mark style="color:yellow;">seperate\_suggestion\_channels</mark>

**Type:** Boolean

Move approved/denied suggestions to separate channels.

```json
seperate_suggestion_channels: false
```

**When `true`:** Approved/denied suggestions move to dedicated channels\
**When `false`:** All suggestions stay in the pending channel

***

### <mark style="color:yellow;">allow\_message\_suggestions</mark>

**Type:** Boolean

Allow users to submit suggestions by simply typing in the suggestion channel.

```json
allow_message_suggestions: false
```

**When `true`:** Messages in suggestion channel create suggestions\
**When `false`:** Must use `/suggest` command

***

### <mark style="color:yellow;">category\_based\_colors</mark>

**Type:** Boolean

Use different colors for suggestion embeds based on category.

```json
category_based_colors: false
```

Requires `suggestion_categories` to be configured.

***

### <mark style="color:yellow;">suggestion\_categories</mark>

**Type:** Array of Objects

Define suggestion categories with custom colors.

```json
suggestion_categories: [
    {
        name: "General",
        color: "#3498DB",
    },
    {
        name: "Discord",
        color: "#E74C3C",
    },
]
```

**name** - Category name\
**color** - Hex color code (leave empty for default)

***

## <mark style="color:blue;">Role Saving</mark>

Save and restore user roles when they leave and rejoin.

### <mark style="color:yellow;">enabled</mark>

**Type:** Boolean

Enables or disables role saving.

```json
role_saving: {
    enabled: false,
}
```

***

### <mark style="color:yellow;">bypass\_auto\_roles</mark>

**Type:** Boolean

Whether to skip auto-roles if saved roles exist.

```json
bypass_auto_roles: false
```

**When `true`:** Auto-roles won't apply if user has saved roles\
**When `false`:** Both saved roles and auto-roles are applied

***

### <mark style="color:yellow;">blacklisted\_roles</mark>

**Type:** Array of Strings

Roles that should not be saved or restored.

```json
blacklisted_roles: ["123456789012345678"]
```

Common use cases:

* Temporary roles (muted, etc.)
* Event-specific roles
* Roles that should be earned again

***

## <mark style="color:blue;">Custom Boost Message</mark>

### <mark style="color:yellow;">enable\_custom\_boost\_message</mark>

**Type:** Boolean

Send a custom message when someone boosts the server.

```json
enable_custom_boost_message: true
```

Message content is configured in the lang.json file.

***

## <mark style="color:blue;">Support Voice Call Notification</mark>

Ping staff when someone joins a support voice channel.

### <mark style="color:yellow;">support\_voice\_channels</mark>

**Type:** Array of Strings

List of support voice channel IDs.

```json
support_voice_call_notification: {
    support_voice_channels: ["123456789012345678"],
}
```

**When empty:** Feature is disabled

***

### <mark style="color:yellow;">mention\_roles</mark>

**Type:** Array of Strings

Roles to mention when someone joins a support voice channel.

```json
mention_roles: ["804354037662220289"]
```

***

## <mark style="color:blue;">Complete Configuration Example</mark>

Here's a production-ready management configuration:

```json
{
    config: {
        logs: {
            types: {
                channel_create: true,
                channel_delete: true,
                member_join: true,
                member_leave: true,
                message_delete: true,
                message_update: true,
                // Enable only the logs you need
            },
            exclude_message_logs: [],
            exclude_channel_edit_logs: [],
        },

        welcome_message: {
            enabled: true,
            display_type: "IMAGE",
            image: {
                title: "Welcome %user%",
                description_text: "Member #%member_size%",
            },
            mention_user: true,
            emoji: {
                enabled: true,
                emoji: "👋",
            },
            send_after_verification: false,
            dm_message: false,
        },

        goodbye_message: {
            enabled: true,
            display_type: "IMAGE",
            image: {
                title: "Goodbye %user%",
                description_text: "We'll miss you!",
            },
            emoji: {
                enabled: false,
                emoji: "👋",
            },
        },

        auto_role: {
            enabled: true,
            roles_to_add: ['804354038987882588'],
        },

        auto_thread_reaction: {
            enabled: false,
            parent_id: "",
            emojis: [],
        },

        auto_message_response: {
            enabled: false,
            keywords: [],
        },

        auto_crosspost: {
            enabled: false,
            channel_ids: [],
        },

        scheduled_messages: {
            enabled: false,
            messages: [],
        },

        suggestions: {
            disable_suggestion_threads: false,
            seperate_suggestion_channels: false,
            allow_message_suggestions: false,
            category_based_colors: false,
            suggestion_categories: [],
        },

        role_saving: {
            enabled: false,
            bypass_auto_roles: false,
            blacklisted_roles: [],
        },

        enable_custom_boost_message: true,

        support_voice_call_notification: {
            support_voice_channels: [],
            mention_roles: [],
        }
    }
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.iynxdev.com/configuration-files/management.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
