ActionDiscordUpdated September 2026
How do I send a Discord message from a bot?
Short answer: You can send message in Discord by hand from its own interface, but it won’t repeat itself. On TinyCommand, add the Discord Send Message action to a workflow, map its 3 inputs from any upstream app, and it runs automatically every time the trigger fires. No code, and a free tier to start.
Inputs
The fields this action accepts.
Every field can be mapped from an upstream trigger, AI step, table row, or hard-coded literal.
| Field | Type | Required | Description |
|---|---|---|---|
Channel ID channel_id | string | Required | The Discord channel snowflake ID |
Message Content content | string | Required | Message text (supports Discord Markdown, max 2000 chars) |
Text-to-Speech tts | options | Optional | Text-to-Speech. Options: No, Yes |
Sample request
{"channel_id": "e.g. 123456789012345678","content": "e.g. Hello from the bot! :wave:","tts": "{{trigger.tts}}"}
Returns
{"id": "msg123","author": {"id": "bot123","username": "MyBot"},"content": "Hello from the bot!","timestamp": "2025-01-15T12:00:00.000000+00:00","channel_id": "123456789012345678"}
Use these fields in downstream nodes for routing, logging, or error handling.
Triggered by
Apps that pair well as the trigger for Send Message.
Any of these apps can fire this action as part of a workflow.
FAQ
Questions about Send Message.
What does the Send Message action do in Discord?
Sends a message to a Discord channel via the bot, with optional embeds, components (buttons/select menus), and reply target. The default Discord notification action.
What inputs does Send Message require?
Required: Channel ID, Message Content. Every input accepts a static value or a variable from any upstream node in your workflow.
Can I use dynamic inputs from earlier workflow nodes?
Yes. Any field on this action can pull values from upstream nodes, whether that's a form response, a trigger payload, an AI output, or a lookup result.
What happens if Discord returns an error?
The run history shows the failed step with its input and the error message Discord returned, so you can fix the input and run the workflow again. Automatic retries are built into HTTP steps only, where you can also set your own retry count and delay.
Does Send Message support batch operations?
Run Send Message inside a loop to process each item in an array. TinyCommand does not throttle calls for you, so for large arrays add a Delay step if you need to stay within Discord's rate limits.
More actions
Other Discord actions.
Action
Add Reaction
Adds an emoji reaction to a Discord message from the bot. Used as a lightweight ack or to seed a reaction-vote message.
ActionCreate Thread
Creates a new thread in a Discord channel, optionally attached to a source message. Used to keep topical discussion out of the main channel.
ActionDelete Message
Deletes a message from a Discord channel. The bot can delete its own messages, or any message in channels where it has Manage Messages permission.
ActionEdit Message
Edits an existing Discord message. The bot can only edit its own messages; great for updating status messages, vote tallies, or live counters without spam.
ActionList Channels
Lists all channels in a Discord server (guild) with their type, name, and parent category. Used to populate a channel picker.
ActionList Guild Channels
Lists all channels in a Discord server (guild). Functionally the same as List Channels; exists for naming consistency in older flows.