Skip to content

Chat actions

Say things, run commands, alert yourself, and write to the client console.

Four blocks that produce text: two send it to the server, two send it to you.

All four expand tokens before sending. A flow never stores a value, only the token, so the same flow works on every client, each using its own values.

TokenMeaning
{{name}}A value saved on the client, in its Variables panel. Required: the client lists it as needed until you fill it in.
{{name|fallback}}The same, but optional: fallback is used while nothing is set, and the client does not ask for it.
{{var:name}}A value set while the flow runs, by set variable or handed over by a trigger.
{{round}}, {{round0}}The current loop pass, 1-based and 0-based. Reserved: a variable cannot shadow them.
{{secret:name}}An older explicit form for a client variable. Still valid; new flows do not need it.

A variable saved on a client can be tagged secret. A secret is encrypted at rest, is never shown again after you save it, is never returned to the editor, and never appears in the client log.

Until a required variable is filled in, the client will not start, and it tells you which values are missing.

Double braces are deliberate: game commands carry single-brace NBT (/give @p stone{display:{Name:"x"}}), and substituting inside that would corrupt the command.

chat

Sends a line of public chat.

FieldTypeRequiredNotes
text1–256 charsyesExpanded before sending.
on player joins
chat hello {{var:player}}

A leading / makes this a command as far as the server is concerned, but use the command block for that. It is clearer, and it adds the slash for you.

The text is cleaned before it goes out: § and control characters are removed, and a new line starts a separate message. Text that is empty after that is skipped with a warning. A client sends 5 messages at once, then one a second, across chat and commands together; anything over that waits its turn and is never dropped. If the text uses a {{secret:name}} that is not set, the step fails with a warning naming it and nothing is sent.

command

Runs a chat command. The leading / is added for you, on every line when the text has several.

FieldTypeRequiredNotes
text1–256 charsyesWithout the leading slash. Expanded before sending.
on join
command /login {{password}}

Passwords belong in a variable, not in the text. Open the client's Variables panel, add password, and leave it tagged secret. The value is filled in when the client runs, is never written into the flow, and never reaches the logs, and the same flow can drive twenty clients, each logging in with its own password.

The editor's ready-made Log in and Register blocks write exactly this for you:

on chat matching please register
send register with the client's server password (twice)

The Register block sends the secret twice, which is what most /register commands expect. Most login plugins ask you to register once and then log in on every later join, so pair it with a chat trigger on the server's "please register" line.

notify

Sends a message to you through the in-app mail plus every notification channel you have configured (Discord, webhook, browser push).

FieldTypeRequiredNotes
message1–256 charsyesExpanded before sending.
when low on oak_log (below 16)
notify owner: running out of logs

Do not use this to trace a flow step by step: every call reaches your phone. Use log for that.

A message that comes out empty after expanding, for example one made only of a variable that holds nothing, is not sent. The console warns instead.

Sending to one channel

The notify … to block sends to a single saved channel and nowhere else: no mail row, no push, none of your other channels. Pick the channel from the dropdown; it lists what you have set up under Settings › Notifications.

when low on oak_log (below 16)
notify running out of logs to ops webhook

The block stores the channel's id, not its address, so a flow you export or publish never carries your webhook URL with it. The other side of that: a flow imported from the Flow library names a channel that does not exist in your account, and the block shows (no channels saved). The action still delivers: an unresolvable channel falls back to your normal ones rather than going nowhere. Repoint it at one of yours to make it specific again.

log

Writes a line to this client's console and log history. Goes nowhere else.

FieldTypeRequiredNotes
message1–256 charsyesExpanded before writing.
when run manually or by webhook
repeat 4 times
dig nearest stone within 8 blocks, 1 time(s)
log pass {{round}} done

This is the debugging tool. Log history is pruned after 7 days.

Chat actions · CubeMind docs