Discord
Integration with Discord allows sending messages (Discord ↔ Minecraft) between the Minecraft server and a Discord server.


For the bot to work correctly, enable three settings for your bot in the Discord Developer Portal

Also grant the bot permissions for Read Messages, Send Messages, and Use Webhooks
Message Types
| Type | Explanation |
|---|---|
CHAT_GLOBAL | Message from the global chat |
CHAT_LOCAL | Message from the local chat |
AFK | Message from the afk action |
ADVANCEMENT | Message from an advancement |
DEATH | Message from death |
JOIN | Message when a player joins the server |
QUIT | Message when a player leaves the server |
FROM_DISCORD_TO_MINECRAFT | Message from Discord to Minecraft |
FROM_TWITCH_TO_MINECRAFT | Message from Twitch to Minecraft |
FROM_TELEGRAM_TO_MINECRAFT | Message from Telegram to Minecraft |
COMMAND_ME | Message from the /me command |
COMMAND_BALL | Message from the /ball command |
COMMAND_BAN | Message from the /ban command |
COMMAND_BROADCAST | Message from the /broadcast command |
COMMAND_COIN | Message from the /coin command |
COMMAND_DICE | Message from the /dice command |
COMMAND_DO | Message from the /do command |
COMMAND_HELPER | Message from the /helper command |
COMMAND_MUTE | Message from the /mute command |
COMMAND_POLL_CREATE_MESSAGE | Message from the /poll command |
COMMAND_SPY | Player monitoring sent to /spy |
COMMAND_STREAM | Message from the /stream command |
COMMAND_TRANSLATETO | Message from the /translateto command |
COMMAND_TRY | Message from the /try command |
COMMAND_WARN | Message from the /warn command |
COMMAND_KICK | Message from the /kick command |
SERVER_ENABLE | Message when the server starts |
SERVER_DISABLE | Message when the server shuts down |
If you have custom chats with your own names, for example admin, you will need to specify CHAT_ADMIN. If you have your own groups from the vanilla module, you need to specify their names.
🌍 Localization
Pathlocalizations → language.yml → integration.discord
discord:
null_player: "This player does not exist"
sender_name: "Discord"
format_reply: "<fcolor:4><hover:show_text:'<fcolor:4><reply_message>'>[Reply to @<reply_user>]</hover> "
custom_command:
ping:
content: "<player>'s ping is <replacement:ping>"
info_channel:
id: "TPS <replacement:tps>"
message_channel:
FROM_DISCORD_TO_MINECRAFT:
content: "<fcolor:2><global_name> <fcolor:1>» <fcolor:4><reply><message>"
CHAT_GLOBAL:
content: "<final_message>"discord:
null_player: "Игрок не найден"
sender_name: "Discord"
format_reply: "<fcolor:4><hover:show_text:'<fcolor:4><reply_message>'>[Ответ на @<reply_user>]</hover> "
custom_command:
ping:
content: "Пинг игрока <player> равен <replacement:ping>"
info_channel:
айди: "ТПС <replacement:tps>"
message_channel:
FROM_DISCORD_TO_MINECRAFT:
content: "<fcolor:2><global_name> <fcolor:1>» <fcolor:4><reply><message>"
CHAT_GLOBAL:
content: "<final_message>"null_player
Message if the player entered via custom_command is not found
sender_name
Name of sender (of integration itself), which will be used, for example, in another integration for placeholders
format_reply
Message format for the <reply> tag when the message is a reply to another one
custom_command
List of custom integration commands, where the key is the command name and the value is its message format
custom_command:
tps:
content: "<tps>"Command to get the tps value on the server. Don't forget to create it in integration.yml
Placeholders
You can use all placeholders that are used in the initial message for Minecraft
There is a <reason> placeholder there, so I can use <reason> inside Discord messages
There are also placeholders that will DEFINITELY be replaced in any message
<final_message>message sent to Minecraft<final_clear_message>message sent to Minecraft without unicode emojis<player>nickname of the player who sent the message<message>raw message written by the player<plain_message>formatted message written by the player<reply>formatted reply message, it will be empty if the main message is not a reply- Obviously, all placeholders from
PlaceholderAPIandFlectonePulsewill also work
The message that will be sent from Discord to Minecraft has its own placeholders:
| Placeholder | What it returns |
|---|---|
<name> | Global name of the Discord member |
<global_name> | Global name of the Discord member |
<nickname> | Nickname of the Discord member |
<display_name> | Display name of the Discord member |
<user_name> | Discord member's tag |
info_channel
List of channel IDs and their names for displaying some information, such as TPS
message_channel
List of messages with their settings
message_name:
content: ""
webhook_name: "<player>"
webhook_avatar: "https://mc-heads.net/avatar/<skin>/32.png"
embed:
color: ""
title: ""
url: ""
author:
name: ""
url: ""
icon_url: "https://mc-heads.net/avatar/<skin>/16.png"
description: ""
thumbnail: ""
fields:
- name: ""
value: ""
inline: false
image: ""
timestamp: true
footer:
text: ""
icon_url: "https://mc-heads.net/avatar/<skin>/16.png"Message with all parameters

If a parameter is empty or not written, it will not be used in the final message
⚙️ Setting
Pathintegration.yml → discord
discord:
enable: false
ignore_all_bots: true
token: ""
custom_command:
ping:
need_player: true
aliases:
- "!ping"
presence:
enable: true
status: "ONLINE"
activity:
enable: true
type: "PLAYING"
name: "FlectonePulse"
url: "https://flectone.net/pulse/"
channel_info:
enable: false
ticker:
enable: true
period: 1200
message_channel:
FROM_DISCORD_TO_MINECRAFT:
- "123456"
CHAT_GLOBAL:
- "123456"
destination:
type: "CHAT"
sound:
enable: falseenable
Enables or disables the functionality of the module
- Before enabling, insert the Discord bot token
- After enabling, it is RECOMMENDED to restart the server, otherwise the plugin may cause a freeze
ignore_all_bots
If enabled, messages from any users who are bots will be ignored. Otherwise, only the current bot's own messages will be ignored
token
Token of the Discord bot for connection. You can use environment variables, for example ${VALUE}
custom_command
List of custom integration commands, the key is the command name and it can be anything. Commands can ONLY be informational; they do not and will not execute anything on the server
| Parameter | Explanation |
|---|---|
need_player | Whether to check the first command argument for a player name, e.g., !ping TheFaser |
aliases | List of aliases for using the command |
custom_command:
tps:
need_player: false
aliases:
- "!tps"
- "!tickpersecond"Command to get the tps value on the server using !tps or !tickpersecond. Don't forget to create a message in localization
presence

channel_info

message_channel
List of message types and Channel IDs in Discord
Copy the channel ID in Discord 1286666844358316083
Set COMMAND_BAN: "1286666844358316083"
message_channel:
COMMAND_BAN:
- "1286666844358316083"Localization can be left unconfigured; by default, the message will be sent with the <final_message> format
destination
Where the message will be sent
| Type | Explanation | Requires additional configuration? |
|---|---|---|
ACTION_BAR | Message above the player's inventory | Yes |
BOSS_BAR | Message at the top of the screen | Yes |
BRAND | Message in F3 | No |
CHAT | Message in chat | No |
TEXT_SCREEN | Message anywhere on the screen | Yes |
TITLE | Full-screen message | Yes |
SUBTITLE | Full-screen message (bottom line) | Yes |
TAB_HEADER | Message in TAB (top) | No |
TAB_FOOTER | Message in TAB (bottom) | No |
TOAST | Message in the top right corner (achievement) | Yes |
sound
Sound playback
🔐 Permissions
Pathpermission.yml → integration.discord
discord:
name: "flectonepulse.module.integration.discord"
type: "TRUE"
sound:
name: "flectonepulse.module.integration.discord.sound"
type: "TRUE"name
Permission name
type
Permission type
| Type | Explanation |
|---|---|
TRUE | Available to any player |
FALSE | Available to no one, must be granted separately (e.g., using LuckPerms) |
OP | Available to server operators |
NOT_OP | Available to NON-operators of the server |
sound
Permission to use the sound
Last updated on
Edit on GitHub
FlectonePulse