Описание
Используйте этот метод для пересылки нескольких сообщений любого типа. Если некоторые из указанных сообщений не могут быть найдены или пересланы, они пропускаются. Служебные сообщения и сообщения с защищённым содержимым не могут быть пересланы. Группировка альбомов сохраняется для пересланных сообщений. При успешном выполнении возвращается массив MessageId отправленных сообщений.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| chat_id | Integer или String | Да | Уникальный идентификатор целевого чата или имя пользователя целевого канала (в формате @channelusername) |
| message_thread_id | Integer | Необязательный | Уникальный идентификатор целевой ветки сообщений (темы) форума; только для супергрупп-форумов |
| direct_messages_topic_id | Integer | Необязательный | Идентификатор темы личных сообщений, в которую будут пересланы сообщения; требуется, если сообщения пересылаются в чат личных сообщений |
| from_chat_id | Integer или String | Да | Уникальный идентификатор чата, из которого были отправлены исходные сообщения (или имя пользователя канала в формате @channelusername) |
| message_ids | Array of Integer | Да | JSON-сериализованный список из 1-100 идентификаторов сообщений в чате from_chat_id для пересылки. Идентификаторы должны быть указаны в строго возрастающем порядке. |
| disable_notification | Boolean | Необязательный | Отправляет сообщения бесшумно. Пользователи получат уведомление без звука. |
| protect_content | Boolean | Необязательный | Защищает содержимое пересланных сообщений от дальнейшей пересылки и сохранения |
Примеры
php
<?php
$botToken = 'YOUR_BOT_TOKEN';
$apiUrl = "https://api.telegram.org/bot{$botToken}/";
// Параметры для forwardMessages
$params = [
'chat_id' => 123456789, // ID целевого чата
'from_chat_id' => -1001234567890, // ID чата-источника (канал/супергруппа)
'message_ids' => [1, 2, 3, 4], // Массив ID сообщений для пересылки
'disable_notification' => false, // Отправлять с уведомлением
'protect_content' => true, // Защитить содержимое от пересылки
// 'message_thread_id' => 123, // Для тем форума (опционально)
// 'direct_messages_topic_id' => 456, // Для тем личных сообщений (опционально)
];
// Отправка запроса
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl . 'forwardMessages');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
// Обработка ответа
$result = json_decode($response, true);
if ($result['ok']) {
foreach ($result['result'] as $messageId) {
echo "Сообщение переслано с ID: " . $messageId['message_id'] . "\n";
}
} else {
echo "Ошибка: " . $result['description'] . "\n";
}
// Альтернативный вариант с использованием file_get_contents
/*
$context = stream_context_create([
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/json',
'content' => json_encode($params)
]
]);
$response = file_get_contents($apiUrl . 'forwardMessages', false, $context);
$result = json_decode($response, true);
*/
?>
python
import asyncio
from typing import List
from telegram import Bot
from telegram.constants import ParseMode
async def forward_messages_example():
# Инициализация бота с вашим токеном
bot = Bot(token="YOUR_BOT_TOKEN")
# Параметры для пересылки сообщений
chat_id = -1001234567890 # ID целевого чата/канала
from_chat_id = -1009876543210 # ID чата, откуда пересылаем
message_ids = [123, 124, 125] # ID сообщений для пересылки (в строго возрастающем порядке)
try:
# Вызов метода forwardMessages
result = await bot.forward_messages(
chat_id=chat_id,
from_chat_id=from_chat_id,
message_ids=message_ids,
disable_notification=True, # Опционально: без звука
protect_content=False, # Опционально: защита контента
# message_thread_id=456, # Опционально: для топиков форума
# direct_messages_topic_id=789, # Опционально: для тем личных сообщений
)
# Результат - список объектов MessageId
print(f"Успешно переслано {len(result)} сообщений")
for msg_id in result:
print(f"ID пересланного сообщения: {msg_id.message_id}")
except Exception as e:
print(f"Ошибка при пересылке сообщений: {e}")
# Запуск асинхронной функции
if __name__ == "__main__":
asyncio.run(forward_messages_example())
История изменений
- API 7.0. Добавлен метод forwardMessages
- API 9.2. Обновлен метод forwardMessages: Добавлен параметр direct_messages_topic_id
- API 9.3. Обновлен метод forwardMessages: Поддержан параметр message_thread_id в личных чатах с темами для отправки сообщения в конкретную тему.
Дополнительно
- MessageId - Объект, содержащий уникальный идентификатор сообщения в Telegram, который может быть равен 0 для запланированных сообщений.