Available methods

copyMessage()

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. Returns the MessageId of the sent message on success.

parameters

parametertyperequireddescription
chat_idnumber | stringrequiredUnique identifier for the target chat or username of the target bot, supergroup or channel in the format @username
message_thread_idnumberoptionalUnique 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_idnumberoptionalIdentifier of the direct messages topic to which the message will be sent; required if the message is sent to a direct messages chat
from_chat_idnumber | stringrequiredUnique identifier for the chat where the original message was sent (or username of the target bot, supergroup or channel in the format @username)
message_idnumberrequiredMessage identifier in the chat specified in from_chat_id
video_start_timestampnumberoptionalNew start timestamp for the copied video in the message
captionstringoptionalNew caption for media, 0-1024 characters after entities parsing. If not specified, the original caption is kept.
parse_modestringoptionalMode for parsing entities in the new caption. See formatting options for more details.
caption_entitiesMessageEntity[]optionalA JSON-serialized list of special entities that appear in the new caption, which can be specified instead of parse_mode
show_caption_above_mediabooleanoptionalPass True, if the caption must be shown above the message media. Ignored if a new caption isn't specified.
disable_notificationbooleanoptionalSends the message silently. Users will receive a notification with no sound.
protect_contentbooleanoptionalProtects the contents of the sent message from forwarding and saving
allow_paid_broadcastbooleanoptionalPass 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_idstringoptionalUnique identifier of the message effect to be added to the message; only available when copying to private chats
suggested_post_parametersSuggestedPostParametersoptionalA 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_parametersReplyParametersoptionalDescription of the message to reply to
reply_markupInlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReplyoptionalAdditional 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.

returns

MessageId

usage in yaebal

not (yet) hard-typed on Api — call it through the generic .call<T>() escape hatch documented in @yaebal/types.

bot.ts
import type { CopyMessageParams, MessageId } from "@yaebal/types";

await bot.api.call<MessageId>("copyMessage", {
  chat_id: 123456789,
  from_chat_id: 123456789,
  message_id: 1,
} satisfies CopyMessageParams);