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

# Join DM

> Automatically send a private welcome message to new members.

Join DM sends a personalized direct message to every new member who joins your server. The DM includes a disabled button showing which server the message is from, so the member always knows the source.

<Note>
  **Required Permission:** [Admin Access](/permissions/admin-access) or higher — Server Owner, Extra Owner, Trusted User, or Administrator with a role above the bot can use these commands.
</Note>

<Warning>
  **Premium Feature:** This module requires an active Premium subscription. If the server's premium expires, the join DM system will be automatically disabled.
</Warning>

## Setting Up

Follow these steps to configure the join DM for your server.

<Steps>
  <Step title="Run the Set Command">
    Provide your welcome DM message.

    ```bash theme={null}
    .joindm set Welcome to {servername}, {user}! Please read the rules and enjoy your stay.
    ```

    A preview of the message will be shown before saving.
  </Step>

  <Step title="Test It">
    The test command sends the DM directly to your own inbox so you can see exactly what new members will receive.

    ```bash theme={null}
    .joindm test
    ```
  </Step>
</Steps>

<Note>
  Unlike other modules, Join DM does **not** require a channel since the message is sent directly to the user's DMs.
</Note>

***

## Commands

| Command              | Description                                      |
| :------------------- | :----------------------------------------------- |
| `.joindm set <text>` | Sets the join DM message                         |
| `.joindm show`       | Shows the current join DM message with a preview |
| `.joindm test`       | Sends a test DM to yourself                      |
| `.joindm reset`      | Deletes the join DM configuration                |
| `.joindm enable`     | Enables the join DM                              |
| `.joindm disable`    | Disables the join DM                             |

***

## Customizing Messages

The join DM is fully customizable and supports both **dynamic variables** and **custom embeds**.

### Using Variables

You can dynamically insert information like the server name or member count. Refer to the [Variables](/resources/variables) reference for the full list.

**Available contexts:** Server, User, Author, Target

<CodeGroup>
  ```bash Input theme={null}
  .joindm set Hey {user}! Welcome to {servername}, we now have {servermembercount} members!
  ```

  ```text Output theme={null}
  Hey @john_doe! Welcome to ZEON Official, we now have 50,210 members!
  ```
</CodeGroup>

### Using Custom Embeds

Design a rich embed using the interactive embed builder, then attach it to your message with the `{embed:name}` syntax.

<Steps>
  <Step title="Create the Embed">
    ```bash theme={null}
    .embed create dm_welcome
    ```

    Use the dropdown menu to customize title, description, color, images, and variables.
  </Step>

  <Step title="Attach to Message">
    ```bash theme={null}
    .joindm set Welcome aboard! {embed:dm_welcome}
    ```
  </Step>
</Steps>

<Note>
  The `{embed:name}` placeholder is invisible in the final output. The bot strips it from the text and attaches the rich embed below the message. Variables placed inside the embed builder will also parse correctly.
</Note>

### Limitations

<Warning>
  * If a member has their **DMs closed** or has blocked the bot, the message will silently fail. This is a Discord limitation and cannot be bypassed.
  * A join DM configuration **must be reset** before setting a new one. Use `.joindm reset` first.
  * The `{channel}` variable is **not available** in join DMs since there is no channel context.
</Warning>
