Skip to content

copyMessage

Returns MessageId

Use this method to copy messages of any kind. Service messages, paid media messages, giveaway messages, giveaway winners messages, and invoice messages can’t be copied. A quiz poll can be copied only if the value of the field correct_option_id is known to the bot. The method is analogous to the method forwardMessage, but the copied message doesn’t have a link to the original message.

Required: chat_id, from_chat_id, message_id · Optional: 14 parameters

Limits:

  • caption: 0-1024 characters
  • allow_paid_broadcast: up to 1000 messages
Try it
Token saved
Response

TypeScript example · @effect-ak/tg-bot-client
import { makeTgBotClient } from "@effect-ak/tg-bot-client"
const client = makeTgBotClient({ bot_token: "YOUR_BOT_TOKEN" })
const result = await client.execute("copy_message", {
chat_id: "YOUR_CHAT_ID",
from_chat_id: { /* number | string */ },
message_id: 0
})

Parameters

chat_id number | string Required
Unique identifier for the target chat or username of the target channel (in the format @channelusername).

from_chat_id number | string Required
Unique identifier for the chat where the original message was sent (or channel username in the format @channelusername).

message_id number Required
Message identifier in the chat specified in from_chat_id.

message_thread_id number
Unique identifier for the target message thread (topic) of a forum; for forum supergroups and private chats of bots with forum topic mode enabled only.

direct_messages_topic_id number
Identifier of the direct messages topic to which the message will be sent; required if the message is sent to a direct messages chat.

video_start_timestamp number
New start timestamp for the copied video in the message.

caption string
New caption for media, 0-1024 characters after entities parsing. If not specified, the original caption is kept.

parse_mode "HTML" | "MarkdownV2"
Mode for parsing entities in the new caption. See formatting options for more details.

caption_entities MessageEntity[]
A JSON-serialized list of special entities that appear in the new caption, which can be specified instead of parse_mode.

show_caption_above_media boolean
Pass True, if the caption must be shown above the message media. Ignored if a new caption isn’t specified.

disable_notification boolean
Sends the message silently. Users will receive a notification with no sound.

protect_content boolean
Protects the contents of the sent message from forwarding and saving.

allow_paid_broadcast boolean
Pass True to allow up to 1000 messages per second, ignoring broadcasting limits for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot’s balance.

message_effect_id string
Unique identifier of the message effect to be added to the message; only available when copying to private chats.

suggested_post_parameters SuggestedPostParameters
A JSON-serialized object containing the parameters of the suggested post to send; for direct messages chats only. If the message is sent as a reply to another suggested post, then that suggested post is automatically declined.

reply_parameters ReplyParameters
Description of the message to reply to.

reply_markup InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply
Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove a reply keyboard or to force a reply from the user.

copyMessages