Nodes/ComfyUI Telegram Suite/Send Chat Action 🔽
ComfyUI Node

Send Chat Action 🔽

Show 'typing…' in Telegram while your workflow grinds

By SwissCore92·Created about a year ago·Updated 2 months ago· 9
Send Chat Action 🔽
  • bot
  • trigger
  • True
  • trigger
chat_id
action
message_thread_id

Send Chat Action is Telegram's "something is happening" signal. When a bot is about to deliver a long-running result, Telegram lets it broadcast a status - typing, upload_photo, record_video, and so on - and the chat shows that little indicator. For a solo workflow that's mostly pointless. For a group chat watching a render, or a long generation where people are staring at their phones waiting, it's the difference between "is it dead?" and "oh cool, it's uploading."

The action input is an enum with all eleven Telegram actions: typing, upload_photo, record_video, upload_video, record_voice, upload_voice, upload_document, choose_sticker, find_location, record_video_note, upload_video_note. Pick the one that matches what's about to arrive.

Why it has a trigger, and what a trigger even is

Here's the thing: ComfyUI executes by working backward from output nodes. A node only runs if something downstream actually consumes its output. So if you just hang Send Chat Action at the end of the graph, it runs last - which defeats the "I'm still working" point. The suite solves this with a trigger input/output on most nodes. The idea: the chat action's trigger output feeds into a node that must wait (the README's example wires it into an F5-TTS node's seed), and because that downstream node needs the trigger, the chat action is forced to execute first. The trigger is a passthrough - it doesn't transform anything, it just enforces order.

You can now feed almost any signal straight into the trigger input without converting it first (that requirement was dropped). The one remaining wrinkle: the trigger output is typed * (wildcard), so if you need to keep using that signal afterward as its real type, you re-cast it with an "Any To X" converter. That's the whole reason this pack ships twenty converters.

Inputs and outputs

  • bot and chat_id - from the Telegram Bot node, as usual.
  • action - the enum above.
  • message_thread_id - declared required, meant for forum topics. Annoying quirk: unlike the send nodes, this one doesn't strip negative values before calling the API, so for a normal chat feed it 0 (the bot drops zero values) rather than leaving -1 in there.

Outputs are a True BOOLEAN (a "yes it ran" flag) and the trigger. Note the return type of the trigger output tracks whatever you fed in, so it can pass a typed signal along.

Install and gotchas

Same pack install as everything else - Manager, or git clone https://github.com/SwissCore92/comfyui-telegram-suite.git into custom_nodes, pip install -r requirements.txt, restart. No heavy deps here beyond httpx. The realistic failure mode is ordering: if you wired the trigger into something that doesn't actually require it (a node with a defaulted seed, say), ComfyUI may still evaluate lazily and the action fires at the wrong time. If the status shows after the payload lands, check what you connected the trigger to - it needs to be a dependency the downstream node can't skip.

CategoryTelegram Suite 🔽

Inputs (5)

NameTypeDefaultDescription
botTELEGRAM_BOTTelegram bot instance
chat_idINTUnique identifier for the target chat
actionCOMBOType of action to broadcast. Choose one, depending on what the user is about to receive.
message_thread_idINTUnique Identifier of the message to edit
triggeropt*Optional trigger to enforce execution order

Outputs (2)

NameTypeDescription
TrueBOOL
trigger*