Flectone Logo FlectonePulse

Telegram

Integration with Telegram allows for sending messages (Telegram ↔ Minecraft) between the Minecraft server and Telegram.

telegram message 1 telegram message 2 minecraft message

Message Types

TypeExplanation
CHAT_GLOBALMessage from the global chat
CHAT_LOCALMessage from the local chat
AFKMessage from the afk action
ADVANCEMENT Message from an advancement
DEATHMessage from death
JOINMessage when a player joins the server
QUITMessage when a player leaves the server
FROM_DISCORD_TO_MINECRAFTMessage from Discord to Minecraft
FROM_TWITCH_TO_MINECRAFTMessage from Twitch to Minecraft
FROM_TELEGRAM_TO_MINECRAFTMessage from Telegram to Minecraft
COMMAND_MEMessage from the /me command
COMMAND_BALLMessage from the /ball command
COMMAND_BANMessage from the /ban command
COMMAND_BROADCASTMessage from the /broadcast command
COMMAND_COINMessage from the /coin command
COMMAND_DICEMessage from the /dice command
COMMAND_DOMessage from the /do command
COMMAND_HELPERMessage from the /helper command
COMMAND_MUTEMessage from the /mute command
COMMAND_POLL_CREATE_MESSAGEMessage from the /poll command
COMMAND_SPYPlayer monitoring sent to /spy
COMMAND_STREAMMessage from the /stream command
COMMAND_TRANSLATETOMessage from the /translateto command
COMMAND_TRYMessage from the /try command
COMMAND_WARNMessage from the /warn command
COMMAND_KICKMessage from the /kick command
SERVER_ENABLEMessage when the server starts
SERVER_DISABLEMessage when the server shuts down
Note

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

Path localizations → language.yml → integration.telegram
telegram:
  null_player: "This player does not exist"
  format_reply: "<fcolor:4><hover:show_text:'<fcolor:4><reply_message>'>[Reply to @<reply_user>]</hover> "
  custom_command:
    id: "Channel id: <id>"
    ping: "<player>'s ping is <replacement:ping>"
  info_channel:
    id: "TPS <replacement:tps>"
  message_channel:
    FROM_TELEGRAM_TO_MINECRAFT: "<fcolor:2><user_name> <fcolor:1>» <fcolor:4><reply><message>"
    CHAT_GLOBAL: "<final_message>"
telegram:
  null_player: "Игрок не найден"
  format_reply: "<fcolor:4><hover:show_text:'<fcolor:4><reply_message>'>[Ответ на @<reply_user>]</hover> "
  custom_command:
    id: "Айди чата: <id>"
    ping: "Пинг игрока <player> равен <replacement:ping>"
  info_channel:
    айди: "ТПС <replacement:tps>"
  message_channel:
    FROM_TELEGRAM_TO_MINECRAFT: "<fcolor:2><user_name> <fcolor:1>» <fcolor:4><reply><message>"
    CHAT_GLOBAL: "<final_message>"

null_player

Message shown if the player entered via custom_command is not found

format_reply

The message format for the <reply> tag when a message is a reply to another one

custom_command

A list of custom integration commands, where the key is the command name and the value is its message format

Example
custom_command:
  tps:
    content: "<tps>"

A command to get the tps value on the server. Don't forget to define it in integration.yml

Placeholders

You can use all the placeholders that are used in the initial Minecraft message.

Example for a ban message

There is a <reason> placeholder there, which means I can use <reason> inside Telegram messages.

There are also placeholders that are GUARANTEED to be replaced in any message:

  • <final_message> the message sent to Minecraft
  • <final_clear_message> the message sent to Minecraft without unicode emojis
  • <player> the nickname of the player who sent the message
  • <message> the raw message written by the player
  • <plain_message> the formatted message written by the player
  • <reply> the formatted reply message; it will be empty if the main message is not a reply
  • Obviously, all placeholders from PlaceholderAPI and FlectonePulse will also work

A message sent from Telegram to Minecraft has its own placeholders:

PlaceholderWhat it returns
<name>Telegram username handle
<user_name>Telegram username handle
<first_name>Telegram user's first name
<last_name>Telegram user's last name
<chat>Telegram chat title (where the message originated)

info_channel

A list of channel IDs and their names for displaying specific information, such as TPS

message_channel

A list of messages with the final message format

If you want to add another message:

Take the name from the message types list

Insert it into message_channel

message_name: "<final_message>"

⚙️ Setting

Path integration.yml → telegram
telegram:
  enable: false
  parse_mode: "NONE"
  token: ""
  custom_command:
    id:
      need_player: false
      aliases:
      - "!id"
    ping:
      need_player: true
      aliases:
      - "!ping"
  channel_info:
    enable: false
    ticker:
      enable: true
      period: 1200
  message_channel:
    FROM_TELEGRAM_TO_MINECRAFT:
    - "123456"
    CHAT_GLOBAL:
    - "123456"
  destination:
    type: "CHAT"
  sound:
    enable: false

enable

Enables or disables the functionality of the module

Warning
  • Before enabling, insert your Telegram bot token
  • After enabling, it is RECOMMENDED to restart the server

parse_mode

The mode in which the message will be sent to Telegram

ModeDescription
MARKDOWNThe message will be formatted according to the legacy Markdown format
MARKDOWN_V2The message will be formatted according to the new Markdown V2 format
HTMLThe message will be formatted according to the HTML format
NONEThe message will not be formatted at all

token

The bot token for connection. Environment variables can be used, e.g., ${VALUE}

custom_command

A list of custom integration commands; the key is the command name and can be anything. Commands can ONLY be informational; they do not and will not execute anything on the server.

ParameterExplanation
need_playerWhether to check the first argument of the command for a player name, e.g., !ping TheFaser
aliasesA list of aliases for using the command
Example
custom_command:
  tps:
    need_player: false
    aliases:
      - "!tps"
      - "!tickpersecond"

A command to get the tps value on the server using !tps or !tickpersecond. Don't forget to create the message in the localization file

channel_info

Configuration for information channels

enable

Whether the information channel is required

ticker

Updating every specific interval of time

message_channel

A list of message types and Telegram chat IDs

For example, I want Minecraft `/ban` command messages to be sent to Telegram
  1. Copy the chat ID where the message should be sent (-1002341720267_49)

If the bot is connected and added to the channel, you can use the /id command in Telegram to find out the channel ID.

  1. Configure it:
message_channel:
  COMMAND_BAN:
    - "-1002341720267_49"

There can be any number of chats, as long as the bot has access to them from secrets. Localization configuration is optional; by default, the message will be sent with the <final_message> format.

Important

If your channel is a Forum (Topic), the MAIN channel ID must be specified without the _ suffix.

  1. My main channel ID (which always ends in _1) is -1002341720267_1
  2. Therefore, you should enter ONLY -1002341720267

This rule does not apply to other chats within the forum, where the FULL ID must be entered.

destination

Where the message will be sent

TypeExplanationRequires additional configuration?
ACTION_BARMessage above the player's inventoryYes
BOSS_BARMessage at the top of the screenYes
BRANDMessage in F3No
CHATMessage in chatNo
TEXT_SCREENMessage anywhere on the screenYes
TITLEFull-screen messageYes
SUBTITLEFull-screen message (bottom line)Yes
TAB_HEADERMessage in TAB (top)No
TAB_FOOTERMessage in TAB (bottom)No
TOASTMessage in the top right corner (achievement)Yes

sound

Sound playback


🔐 Permissions

Path permission.yml → integration.telegram
telegram:
  name: "flectonepulse.module.integration.telegram"
  type: "TRUE"
  sound:
    name: "flectonepulse.module.integration.telegram.sound"
    type: "TRUE"

name

Permission name

type

Permission type

TypeExplanation
TRUEAvailable to any player
FALSEAvailable to no one, must be granted separately (e.g., using LuckPerms)
OPAvailable to server operators
NOT_OPAvailable to NON-operators of the server

sound

Permission to use the sound

Last updated on

Edit on GitHub

On this page

Authors of page