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_newschat_id:${chat.id}message_id:42caption:Новость дня: <b>читайте внимательно</b>
Пример 4: Копия без подписей
Задача: Перенести альбом из канала, убрав все подписи.
Реакция CopyMessage:
from_chat_id:@channel_newschat_id:-100123456789message_id:101, 102, 103remove_caption:true
Пример 5: Копия как ответ на текущее сообщение
Задача: Ответить пользователю копией сообщения из базы знаний.
Реакция CopyMessage:
from_chat_id:@knowledge_basechat_id:${chat.id}message_id:15reply_auto:true
Пример 6: Копия в тему форума с защитой от пересылки
Реакция CopyMessage:
from_chat_id:${chat.id}chat_id:-100123456789(группа-форум)message_id:${update.message.message_id}topic_id:42protect_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 | Удалить сообщение |