EnotPRO Logo EnotPRO

CopyMessage

CopyMessage — реакция копирует сообщение в указанный чат или канал без ссылки на оригинал.

Назначение

Используется, когда нужно перенести содержимое сообщения, но не показывать, откуда оно взято. В отличие от ForwardMessage, у копии нет пометки «Переслано от», и её можно изменить: заменить подпись у медиа или убрать её совсем.

Реакция умеет копировать как одно сообщение, так и несколько сразу.

⚙️ Параметры

Параметр Тип Обязательный Описание
chat_id Integer/String ❌ Нет ID чата/канала, куда копировать. По умолчанию — целевой чат
from_chat_id Integer/String ❌ Нет ID чата/канала, откуда копировать. По умолчанию — целевой чат
message_id Integer/String ❌ Нет ID сообщения. По умолчанию — текущее сообщение. Можно перечислить через запятую

⚠️ Важно: Не перепутайте параметры! from_chat_id — это чат-источник, chat_id — это чат-получатель.

💡 Если оставить все три параметра пустыми, реакция скопирует текущее сообщение в текущий чат.

⚙️ Дополнительные параметры

Параметр Тип Обязательный Описание
caption String ❌ Нет Новая подпись у медиа. Если оставить пустой, сохранится оригинальная
topic_id Integer ❌ Нет ID темы форума в чате-получателе
dm_topic_id Integer ❌ Нет ID темы личных сообщений в канале
video_start_timestamp Integer ❌ Нет С какой секунды начинать воспроизведение видео
show_caption_above_media Boolean ❌ Нет Показать подпись над медиа, а не под ним
remove_caption Boolean ❌ Нет Скопировать без подписей
disable_notification Boolean ❌ Нет Отправить без звукового уведомления
protect_content Boolean ❌ Нет Запретить сохранение и пересылку копии
effect_id String ❌ Нет ID эффекта сообщения

Подпись поддерживает HTML-разметку. Во всех строковых параметрах работают макросы и переменные.

⚙️ Ответ на сообщение

Параметр Тип Обязательный Описание
reply_chat_id Integer/String ❌ Нет ID чата с сообщением, на которое отвечаем
reply_message_id Integer ❌ Нет ID сообщения, на которое отвечаем
allow_no_reply Boolean ❌ Нет Отправить копию, даже если сообщение для ответа не найдено
reply_auto Boolean ❌ Нет Автоматически ответить на текущее сообщение

💡 Если указан только reply_message_id, чат для ответа берётся из целевого чата. Опция reply_auto срабатывает только тогда, когда reply_chat_id и reply_message_id не заполнены вручную.

🔀 Копирование нескольких сообщений

В поле message_id можно перечислить несколько ID через запятую — например 101, 102, 103. В этом случае Telegram вызывается другим методом, у которого меньше возможностей.

Возможность Одно сообщение Несколько сообщений
Новая подпись (caption) ✅ Да ❌ Нет
Подпись над медиа (show_caption_above_media) ✅ Да ❌ Нет
Ответ на сообщение (reply_*) ✅ Да ❌ Нет
Эффект (effect_id) ✅ Да ❌ Нет
Начало видео (video_start_timestamp) ✅ Да ❌ Нет
Убрать подписи (remove_caption) ❌ Нет ✅ Да
Тема форума, беззвучно, защита от копирования ✅ Да ✅ Да

⚠️ Важно: Список ID автоматически сортируется по возрастанию, а повторы убираются — этого требует Telegram. Порядок, в котором вы перечислили сообщения, значения не имеет.

🔐 Требуемые права бота

Тип чата Требуемые права
Группа/супергруппа (источник) Бот должен быть участником чата
Канал (источник) Бот должен быть администратором канала
Группа/супергруппа (получатель) Бот должен быть участником чата и иметь право отправлять сообщения
Канал (получатель) Бот должен быть администратором канала

🧪 Примеры использования

Пример 1: Копия сообщения в технический чат

Задача: Скопировать сообщение пользователя в чат администраторов, не показывая, что это пересылка.

Реакция CopyMessage:

  • from_chat_id: ${chat.id}
  • chat_id: -100123456789 (технический чат)
  • message_id: ${update.message.message_id}

Пример 2: Копия текущего сообщения без настроек

Задача: Продублировать сообщение в том же чате.

Реакция CopyMessage: все параметры оставить пустыми.

Пример 3: Копия медиа с новой подписью

Задача: Скопировать фото из канала, заменив подпись.

Реакция CopyMessage:

  • from_chat_id: @channel_news
  • chat_id: ${chat.id}
  • message_id: 42
  • caption: Новость дня: <b>читайте внимательно</b>

Пример 4: Копия без подписей

Задача: Перенести альбом из канала, убрав все подписи.

Реакция CopyMessage:

  • from_chat_id: @channel_news
  • chat_id: -100123456789
  • message_id: 101, 102, 103
  • remove_caption: true

Пример 5: Копия как ответ на текущее сообщение

Задача: Ответить пользователю копией сообщения из базы знаний.

Реакция CopyMessage:

  • from_chat_id: @knowledge_base
  • chat_id: ${chat.id}
  • message_id: 15
  • reply_auto: true

Пример 6: Копия в тему форума с защитой от пересылки

Реакция CopyMessage:

  • from_chat_id: ${chat.id}
  • chat_id: -100123456789 (группа-форум)
  • message_id: ${update.message.message_id}
  • topic_id: 42
  • protect_content: true

🔄 Особенности поведения

Ситуация Поведение
Параметры не заполнены Копируется текущее сообщение в целевой чат
Подпись не указана Сохраняется оригинальная подпись сообщения
Подпись указана у сообщения без медиа Подпись не применяется — у текстовых сообщений её нет
Сообщение не найдено Реакция вызовет ошибку
Копирование в тот же чат Работает, создаётся копия
Часть сообщений из списка не найдена Такие сообщения пропускаются, остальные копируются
Копирование альбома Группировка альбома сохраняется

⚠️ Ограничения Telegram

Ограничение Значение
Копирование из канала Бот должен быть администратором канала
Защита от копирования Если у исходного сообщения включена protect_content, скопировать его нельзя
Что нельзя копировать Служебные сообщения, платные медиа, розыгрыши и сообщения о победителях, счета на оплату
Викторины Копируются только если боту известен правильный вариант ответа
Длина подписи До 1024 символов

⚠️ Частые ошибки и их решение

Ошибка 1: chat_id empty или from_chat_id empty

Причина: Чат не указан и не определяется из контекста.

Решение: Заполните параметр явно или убедитесь, что реакция выполняется в контексте чата.

Ошибка 2: message_id empty

Причина: ID сообщения не указан, а текущего сообщения в контексте нет — например, реакция запущена по таймеру.

Решение: Укажите message_id явно.

Ошибка 3: Подпись не заменилась

Причина: Копируется несколько сообщений сразу — при копировании пачки подпись задать нельзя.

Решение: Копируйте сообщения по одному, отдельными реакциями.

Ошибка 4: Ответ не сработал

Причина: Указан список сообщений — при копировании пачки ответ не поддерживается.

Решение: Скопируйте нужное сообщение отдельной реакцией с reply_auto или reply_message_id.

🔗 Связанные реакции

Реакция Назначение
ForwardMessage Переслать сообщение со ссылкой на оригинал
SendMessage Отправить новое сообщение
DeleteMessage Удалить сообщение

🔗 Ссылка на официальную документацию

copyMessage — Telegram Bot API

copyMessages — Telegram Bot API

© 2025 EnotPRO. Все права защищены.