Gistrec

VK get all messages

May 6th, 2020
207
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const axios = require('axios');
  2.  
  3. /**
  4.  * Получаем список всех сообщений в диалоге с пользователем
  5.  * @param {number} peer_id - id пользователя, диалог с которым нужно получить
  6.  * @param {string} token - токен пользователя
  7.  *
  8.  * @throws Функция выбросит исключение, если на ВК вернет ошибку
  9.  */
  10. async function getMessages(peer_id, token) {
  11.     let params = {
  12.         access_token: token,
  13.         peer_id: peer_id,
  14.         count:  200, // Количество сообщений
  15.         offset: 0,   // Смещение, будем менять с шагом 200
  16.         v: 5.103
  17.     }
  18.  
  19.     // Список сообщений
  20.     let messages = [];
  21.  
  22.     while (true) {
  23.         console.info(`Получаем ${params.count} сообщений со смещением ${params.offset}`);
  24.        
  25.         const result = await axios.get("https://api.vk.com/method/messages.getHistory", {params});
  26.  
  27.         messages = messages.concat(result.data.response.items);
  28.  
  29.         params.offset += params.count; // Получаем слеюущие сообщения
  30.  
  31.         if (params.offset > result.data.response.count) {
  32.             return messages;
  33.         }
  34.     }
  35. }
  36.  
  37.    
  38. /**
  39.  * Получаем список всех диалогов
  40.  * @param {string} token - токен пользователя
  41.  * @returns {number} Количество диалогов
  42.  * @returns {object} Список диалогов
  43.  *
  44.  * @throws Функция выбросит исключение, если на ВК вернет ошибку
  45.  */
  46. async function getConversations(token) {
  47.     const params = {
  48.         access_token: token,
  49.         v: 5.103
  50.     }
  51.  
  52.     const result = await axios.get("https://api.vk.com/method/messages.getConversations", {params});
  53.    
  54.     const count         = result.data.response.count;
  55.     const conversations = result.data.response.items;
  56.  
  57.     return {count, conversations};
  58. }
  59.  
  60. (async() => {
  61.     const token = "*Тут должен быть токен, но его нет*";
  62.    
  63.     const {count, conversations} = await getConversations(token);
  64.    
  65.     for (let data of conversations) {
  66.         const peer_id = data.conversation.peer.id;
  67.        
  68.         const messages = await getMessages(peer_id, token);
  69.     }
  70. })();
Comments
  • User was banned
Add Comment
Please, Sign In to add comment