Я работаю над системой обмена сообщениями, в которой мне нужно копировать сообщения из тем форума пользователям, используя API Telegram. Согласно официальной документации Telegram, в запросе CopyMessage есть только один ключ message_thread_id, который, судя по всему, работает только для копирования сообщений от пользователей в темы форума, а не наоборот. Как я могу использовать API Telegram для копирования сообщений из тем форума пользователям, учитывая, что ключ message_thread_id, похоже, работает только для сообщений пользователя в теме? Любая помощь или понимание этого вопроса будут очень признательны.
Вот пример запроса JSON для копирования сообщения:
{
"chat_id": 1106660938,
"message_thread_id": 2,
"from_chat_id": "-1002213908537",
"message_id": 32
}
В этой структуре:
этот запрос (если все данные верны) приводит к 400 сообщению: Неверный запрос: поток сообщений не найден.
Дополнительная информация:
Заранее спасибо за вашу помощь!
Не совсем понял ваш вопрос. Уверены, что ваш бот может получить доступ к этим чатам/форумам?
@0stone0 определенно может, в запросе на копирование сообщения вы отправляете идентификатор чата, из которого вы хотите его скопировать, идентификатор сообщения в этом чате, идентификатор чата, в который вы хотите его отправить, и, возможно, идентификатор темы в супергруппе. Моя путаница возникла из-за того, что я не осознавал, что идентификаторы являются глобальными в супергруппе, поэтому, если вы отправляете сообщение в тему a, а затем в тему b, идентификатор второго сообщения будет идентификатором сообщения, отправленного в теме a + 1. Таким образом, если вы хотите отправить сообщение из темы форума, вам не нужно указывать идентификатор темы в супергруппе, из которой оно пришло
@CBroe да, в API Telegram, чтобы отличать идентификаторы групп от идентификаторов пользователей (здесь идентификатор чата может быть как пользователем, так и идентификатором группы), при ссылке на идентификаторы групп это всегда будут отрицательные числа.
На самом деле, вам не обязательно указывать message_thread_id
, если вы копируете сообщение в приват.
from_chat_id
и message_id
можно использовать вместе для уникальной идентификации сообщения внутри темы форума.
Итак, вам просто нужно вызвать метод copyMessage
с такими параметрами:
{
"chat_id": 1106660938,
"from_chat_id": -1002213908537,
"message_id": 32
}
Это потому, что в приватных чатах нет тем. message_thread_id
учитывается только для чата назначения. Поскольку целевой чат (указанный с помощью chat_id
) представляет собой личный чат пользователя с ботом, в нем нет тем. Следовательно, возникает ошибка:
400: Bad Request: message thread not found
Надеюсь это поможет :)
«from_chat_id — это идентификатор исходного чата» — и на самом деле это должно быть отрицательное число…?