Telegram Multi Actions (Stage) icon

Telegram Multi Actions (Stage)

Send all Telegram content types (text, media, video note, sticker, location, poll, dice, etc.) via Grammy. Supports URL, file_id, and n8n binary. Optional Redis rate limit, retry on 429, separate output for 403 (user blocked bot).

Send Photo

AI-generated

Summary

Send a Telegram photo using the specified operation parameters.

Inputs

  • botToken — Bot token provided in the input (e.g., from Orchestrator or Strapi).
  • chatId (required) — Telegram chat ID or channel external ID where the photo will be sent.
  • replyToMessageId — Optional message ID to reply to (usually from a previous node).
  • replyMarkup — Inline keyboard or reply keyboard markup as JSON.
  • mediaSource — Source of media: "url" for URL or file ID, or "binary" for binary data.
  • media — URL or file ID of the media; used when mediaSource is "url".
  • binaryPropertyName — Name of the binary property containing the file data (default: "data").
  • caption — Caption text for the photo; falls back to text if not provided.
  • captionEntities — JSON array of caption entities for formatted caption.
  • hasSpoiler — Set to true to mark the photo as a spoiler.
  • useRateLimit — Enable Redis‑based rate limiting to avoid 429 errors (requires Redis credentials).

Output shape

array of result items (one per input) indicating success, blocked, or error

Three output streams — Success, User Blocked (403), and Error — each returning an array of items that extend the original input with result metadata.

Examples

Example 1: Send a photo from a URL using a bot token from a previous node

botToken = $json.token, chatId = 12345, mediaSource = url, media = https://example.com/image.jpg, caption = Hello, replyMarkup = {"inline_keyboard":[[{"text":"Like","callback_data":"like"}]]}

Example 2: Send a photo using binary data from a file input with rate limiting enabled

botToken = $json.access_token, chatId = $json.channel.external_id, mediaSource = binary, binaryPropertyName = data, useRateLimit = true

Example 3: Send a photo replying to a message and marking it as a spoiler

botToken = $json.token, chatId = 98765, replyToMessageId = 12345, hasSpoiler = true, mediaSource = url, media = file_id_123

Links

Discussion