--- layout: doc --- # Channel Chat Create channels to separate conversations by group. To use this feature, set `features.channelChat.enabled` to `true` in `config.yml`. ## Creating a Channel ``` /lc channel create [description] [isPrivate] ``` - `channelId`: A unique identifier for the channel (alphanumeric, `_`, `-` only, 3-30 characters) - `name`: The display name of the channel - `description`: A description of the channel (optional) - `isPrivate`: Set to `true` to make the channel private (default: `false`) The creator automatically becomes the owner. ## Joining and Leaving Channels ``` /lc channel join # Join a channel /lc channel leave # Leave the active channel /lc channel switch # Switch the active channel ``` Joining a private channel requires an invitation from the owner or a moderator. ## Active Channel Players can join multiple channels, but only one channel can be active at a time. Chat messages are sent to the active channel. Use `/lc channel switch` to change the active channel. ``` /lc channel status # Display the current active channel and list of joined channels ``` ## Sending to Global Chat (`!` Prefix) While a channel is active, your chat goes to that channel. Prefixing a message with `!` sends that one message to global chat instead, without leaving or switching the channel. ``` !Hello everyone # Goes to global chat even while a channel is active ``` The `!` and any space following it are stripped before the message is sent, so it never appears in the message itself. A message consisting of only `!` is discarded and nothing is sent. > [!NOTE] > The prefix is handled by the chat listener, which is only registered when channel chat, cross-server global chat, or Japanese conversion is enabled. If all three are disabled, a leading `!` stays in the message exactly as typed. ## Roles and Permissions Channels have three roles. | Role | Permissions | |------|-------------| | **OWNER** | Delete the channel, manage moderators, transfer ownership, manage members | | **MODERATOR** | Invite, kick, ban/unban members | | **MEMBER** | Participate in chat, view channel information | ### Moderator Management (Owner Only) ``` /lc channel mod # Grant/revoke moderator permissions /lc channel ownership # Transfer ownership ``` ### Member Management (Owner / Moderator) ``` /lc channel invite # Invite a player /lc channel kick # Kick a player /lc channel ban # Ban a player /lc channel unban # Unban a player ``` ## Limit Settings You can set channel limits in `config.yml` (set to `0` for unlimited). | Setting Key | Description | |-------------|-------------| | `maxChannelsPerServer` | Maximum number of channels per server | | `maxMembersPerChannel` | Maximum number of members per channel | | `maxMembershipPerPlayer` | Maximum number of channels a player can join | ## Message Logging Channel messages can be logged in NDJSON format. Files are rotated daily, and a new file with a suffix is created when `maxFileSizeMB` is exceeded. ```json {"timestamp":"2026-04-05T14:23:45.123Z","playerId":"550e8400-...","playerName":"Steve","channelId":"general","message":"Hello!"} ``` See the `features.channelChat.messageLogging` section on the [Configuration page](/docs/configuration) for logging settings. ## Bypass Permission Players with the `lunaticchat.channelbypass` permission (default: op) are protected from kicks and bans, and can force-delete channels. ## Spy Mode Channel messages are not private from administrators. Players with the `lunaticchat.spy` permission (default: op) also receive channel messages, excluding the sender and the channel's own members. See [Spy Mode](/docs/features/admin#spy-mode) for details. ## Message Format The display format for channel messages can be customized via `messageFormat.channelMessageFormat` in `config.yml`. See [Message Format](/docs/reference/message-format) for details.