@nemolayn
Создатель бота Nemo

Как можно отследить отправку сообщения с изображением, аудио, стикером и видео?

Обьясняю. Мне нужно отслеживать когда человек отправляет сообщение с изображением/аудио/стикером/видео. Это делается через vk.udpates.on([ // название события ]) или vk.updates.on('message_event')?
Я также посмотрел массив message и увидел что тип сообщения просто message:
Код
object:{
  "id": 0,
  "conversationMessageId": 79,
  "peerId": 2000000004,
  "peerType": "chat",
  "senderId": ,
  "senderType": "user",
  "createdAt": 1685765853,
  "text": "! message",
  "forwards": [],
  "attachments": [
    {
      "id": 457247444,
      "ownerId": ,
      "accessKey": "f1dd50e544076191e8",
      "albumId": -3,
      "text": "",
      "createdAt": 1685765850,
      "smallSizeUrl": "https://sun9-39.userapi.com/impg/IoSai0SFV2YR0svNS1TQoa0n_ug7BpSOAnmdnQ/MOtqVHOjtek.jpg?size=130x119&quality=96&sign=0b2deac7b23a0f0df20e292c01fb2e06&c_uniq_tag=bgcfAiCGhpXZwzRpO9-o3ej-c16B2PgmOe1qJIy4BCA&type=album",
      "mediumSizeUrl": "https://sun9-39.userapi.com/impg/IoSai0SFV2YR0svNS1TQoa0n_ug7BpSOAnmdnQ/MOtqVHOjtek.jpg?size=396x363&quality=96&sign=54dea3a277f2163dc854860363d4987c&c_uniq_tag=YdKMvjcUfmqtYTo1Ecf4BA379rlxn1sat6QTWUrNNsM&type=album",
      "largeSizeUrl": "https://sun9-39.userapi.com/impg/IoSai0SFV2YR0svNS1TQoa0n_ug7BpSOAnmdnQ/MOtqVHOjtek.jpg?size=396x363&quality=96&sign=54dea3a277f2163dc854860363d4987c&c_uniq_tag=YdKMvjcUfmqtYTo1Ecf4BA379rlxn1sat6QTWUrNNsM&type=album",
      "sizes": [
        {
          "height": 69,
          "type": "s",
          "width": 75,
          "url": "https://sun9-39.userapi.com/impg/IoSai0SFV2YR0svNS1TQoa0n_ug7BpSOAnmdnQ/MOtqVHOjtek.jpg?size=75x69&quality=96&sign=541702b9e577276fddef73bf0d1348e7&c_uniq_tag=fZ77Na_X8G9L82c045xOPC-GA2ClWed1bSljdQEqW6s&type=album"
        },
        {
          "height": 119,
          "type": "m",
          "width": 130,
          "url": "https://sun9-39.userapi.com/impg/IoSai0SFV2YR0svNS1TQoa0n_ug7BpSOAnmdnQ/MOtqVHOjtek.jpg?size=130x119&quality=96&sign=0b2deac7b23a0f0df20e292c01fb2e06&c_uniq_tag=bgcfAiCGhpXZwzRpO9-o3ej-c16B2PgmOe1qJIy4BCA&type=album"
        },
        {
          "height": 363,
          "type": "x",
          "width": 396,
          "url": "https://sun9-39.userapi.com/impg/IoSai0SFV2YR0svNS1TQoa0n_ug7BpSOAnmdnQ/MOtqVHOjtek.jpg?size=396x363&quality=96&sign=54dea3a277f2163dc854860363d4987c&c_uniq_tag=YdKMvjcUfmqtYTo1Ecf4BA379rlxn1sat6QTWUrNNsM&type=album"
        },
        {
          "height": 119,
          "type": "o",
          "width": 130,
          "url": "https://sun9-39.userapi.com/impg/IoSai0SFV2YR0svNS1TQoa0n_ug7BpSOAnmdnQ/MOtqVHOjtek.jpg?size=130x119&quality=96&sign=0b2deac7b23a0f0df20e292c01fb2e06&c_uniq_tag=bgcfAiCGhpXZwzRpO9-o3ej-c16B2PgmOe1qJIy4BCA&type=album"
        },
        {
          "height": 183,
          "type": "p",
          "width": 200,
          "url": "https://sun9-39.userapi.com/impg/IoSai0SFV2YR0svNS1TQoa0n_ug7BpSOAnmdnQ/MOtqVHOjtek.jpg?size=200x183&quality=96&sign=bf458cf6e87e570577699e047d49ff9c&c_uniq_tag=mhMVVmm4zXg2qrp54fxozFj-yLdKaubNsLfFppTMbio&type=album"
        },
        {
          "height": 293,
          "type": "q",
          "width": 320,
          "url": "https://sun9-39.userapi.com/impg/IoSai0SFV2YR0svNS1TQoa0n_ug7BpSOAnmdnQ/MOtqVHOjtek.jpg?size=320x293&quality=96&sign=a3a111c0023cd32a26c8d196568d14b5&c_uniq_tag=RJ7xWN0bZS9FWalAREwuQvsniD83u7Rk1F20DJc8sXk&type=album"
        },
        {
          "height": 363,
          "type": "r",
          "width": 396,
          "url": "https://sun9-39.userapi.com/impg/IoSai0SFV2YR0svNS1TQoa0n_ug7BpSOAnmdnQ/MOtqVHOjtek.jpg?size=396x363&quality=96&sign=54dea3a277f2163dc854860363d4987c&c_uniq_tag=YdKMvjcUfmqtYTo1Ecf4BA379rlxn1sat6QTWUrNNsM&type=album"
        }
      ]
    }
  ],
  "isOutbox": false,
  "$match": [
    "! message",
    "message"
  ],
  "type": "message",
  "subTypes": [
    "message_new"
  ],
  "state": {}
} // Свое айди я скрыл. Как вы видите тип message.
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
@nemolayn Автор вопроса
Создатель бота Nemo
Что бы обработать нужно просто делать вот так:
vk.updates.on('message', async (message) => {
if(message.attachments){ // проверка на фотки и тп
let att = message.attachments
for(let i = 0; i < att.length; i++){
if(att[i].type == photo){
// фото
} else if(att[i].type == video){
// видео
} // так можно продолжать и дальше.

}
} else {
return;
}
})
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
The_Sketch
@The_Sketch
Веб разработчик x)
Для отслеживания сообщений с изображениями, аудио, стикерами и видео в VK, вы можете использовать метод vk.updates.on('message_new'), который срабатывает каждый раз, когда на страницу пользователя или группы приходит новое сообщение. Для определения типа сообщения и наличия прикрепленных файлов вы можете проверять содержимое объекта message в обработчике события.

В приведенном вами примере, сообщение является обычным текстовым сообщением, однако имеет прикрепленное изображение в массиве attachments. Вы можете проверять наличие элементов в этом массиве и определять тип прикрепленного файла по полю type, которое указано в каждом элементе массива. Например, тип изображения будет указан как "type": "photo" , а тип аудиозаписи будет "type": "audio"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час