Как переотправлять картинки, отправленные боту в личные сообщения [VK]?
Добрый день.
Нужно сделать так, чтобы бот отправлял, например в чат X, картинки, которые пользователь Y написал в личные сообщения сообщества.
Если сделать вот так:
if (message.isChat) return const messageAttachments = message.attachments; messageAttachments.forEach(element => { console.log(element) }) |
if (message.isChat) return const messageAttachments = message.attachments; messageAttachments.forEach(element => { console.log(element) })
То будет возвращен объект класса PhotoAttachment, accessToken которого: undefiend
Как сделать такой функционал?
- NodeJS: v21.6.1
VK-IO: 4.9.1
Token: сообщество
Дополнительно:
Не особо сильно шарю за API VK, но можно предположить, что если есть объект такого класса, который содержит в себе такие свойства, которые явно не обозначены - то может есть какой-то хук, который именно по потребности возвращает картинку по id? Тем более, я так подозреваю что в первой закраске содержится что-то типа photo57643xx_456242xxx. Если так, то он тебе описывает то, что ты можешь получить, потому что VK это VK, и просто так, пустой объект с одним id он тебе не создаст, значит есть какой-то последующий хук, который может забрать этот аттач.
Ответы:
Стоит перезагрузить сообщения с API ВКонтакте:
await context.loadMessagePayload({ force: true });
Будет полный объект сообщения, вместе с access_key в прикреплениях. Cоотвественно прикрепление можно прикрепить преобразовав его к строке attachment.toString() на выходе будет формат ВКонтакте.
Альтернативный вариант — просто перезалить фотографии.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
![Как переотправлять картинки, отправленные боту в личные сообщения [VK]? Как переотправлять картинки, отправленные боту в личные сообщения [VK]?](/wp-content/uploads/22c0dfda4d793d172d3d8ed50ad9d0c0.png)
Для переотправки картинок, отправленных боту в личные сообщения VK, вам потребуется использовать API VK. Ниже приведен пример кода на PHP, который демонстрирует этот процесс:
// Получаем токен доступа и ID пользователя $token = 'YOUR_ACCESS_TOKEN'; $user_id = 'USER_ID'; // Получаем список вложений в сообщении $request_params = array( 'access_token' => $token, 'user_id' => $user_id, 'v' => '5.131' ); $get_attachments = file_get_contents('https://api.vk.com/method/messages.getHistoryAttachments?' . http_build_query($request_params)); $attachments = json_decode($get_attachments, true); // Переотправляем картинки foreach ($attachments['response']['items'] as $item) { if ($item['attachment']['type'] == 'photo') { $photo = $item['attachment']['photo']; $photo_url = end($photo); $request_params = array( 'access_token' => $token, 'user_id' => $user_id, 'attachment' => $photo_url, 'v' => '5.131' ); file_get_contents('https://api.vk.com/method/messages.send?' . http_build_query($request_params)); } }
В этом коде мы сначала получаем список вложений в личных сообщениях боту с помощью метода `messages.getHistoryAttachments`. Затем мы проверяем каждое вложение и если это фотография, переотправляем ее с помощью метода `messages.send`.
Убедитесь, что у вас есть доступ к API VK и права на отправку сообщений пользователю. Также не забудьте заменить `YOUR_ACCESS_TOKEN` на ваш токен доступа и `USER_ID` на ID пользователя, которому вы хотите переслать картинки.
Надеюсь, этот ответ поможет вам решить вашу проблему с пересылкой картинок в личных сообщениях VK через бота. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.