Как лучше отправить сообщение в отдельную беседу Telegram через API?

Ссылка скопирована
1 ответ

По вводным: есть канал в котором созданы отдельные чаты (беседы).
По вводным: отправляя сообщение по id канала, оно отправляется в первый чат- название канала/1
Нужно понять: а как сделать отправку в другие беседы, у которых после слеша разный ID?

$result = $MadelineProto->messages->sendMessage([ 'peer' => $chat_id, 'message' => 'test' ]);
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Алексей Денисов Ответ

В Telegram “канал/1”, “канал/2” и похожие ссылки обычно относятся к topics/forum threads или обсуждениям, а не к отдельным peer в старом смысле. Чтобы отправить сообщение в конкретную тему, одного peer канала недостаточно: нужно указать thread/topic message id или reply_to, в зависимости от библиотеки и API-метода.

В Bot API это делается через message_thread_id:

curl -X POST "https://api.telegram.org/botTOKEN/sendMessage"   -d "chat_id=-1001234567890"   -d "message_thread_id=2"   -d "text=test"

curl -X POST "https://api.telegram.org/botTOKEN/sendMessage" -d "chat_id=-1001234567890" -d "message_thread_id=2" -d "text=test"

В MTProto/MadelineProto логика может отличаться. Для forum topic часто нужно отправлять сообщение в peer супергруппы и указать reply_to/top_msg_id. Смотрите, какой именно id имеет тема. Обычно его можно получить из сообщения внутри нужной темы.

Примерная идея для MadelineProto:

$MadelineProto->messages->sendMessage([
    'peer' => $chat_id,
    'message' => 'test',
    'reply_to' => [
        '_' => 'inputReplyToMessage',
        'top_msg_id' => $topic_id,
    ],
]);

$MadelineProto->messages->sendMessage([ 'peer' => $chat_id, 'message' => 'test', 'reply_to' => [ '_' => 'inputReplyToMessage', 'top_msg_id' => $topic_id, ], ]);

Точная структура зависит от версии MadelineProto. Главное — не пытаться подставлять строку после слеша как отдельный peer. Peer остаётся каналом/супергруппой, а тема указывается дополнительным параметром.

Чтобы найти нужный topic_id, отправьте тестовое сообщение вручную в нужную тему и посмотрите update/message через MadelineProto: там будет reply_to, reply_to_top_id или похожее поле. Его и используйте для последующих отправок.

Итог: отправка в “другую беседу” внутри канала делается не сменой peer, а указанием topic/thread id. Для Bot API это message_thread_id, для MadelineProto — параметры reply_to/top_msg_id в MTProto-вызове.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно