Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const axios = require('axios');
- /**
- * Получаем список всех сообщений в диалоге с пользователем
- * @param {number} peer_id - id пользователя, диалог с которым нужно получить
- * @param {string} token - токен пользователя
- *
- * @throws Функция выбросит исключение, если на ВК вернет ошибку
- */
- async function getMessages(peer_id, token) {
- let params = {
- access_token: token,
- peer_id: peer_id,
- count: 200, // Количество сообщений
- offset: 0, // Смещение, будем менять с шагом 200
- v: 5.103
- }
- // Список сообщений
- let messages = [];
- while (true) {
- console.info(`Получаем ${params.count} сообщений со смещением ${params.offset}`);
- const result = await axios.get("https://api.vk.com/method/messages.getHistory", {params});
- messages = messages.concat(result.data.response.items);
- params.offset += params.count; // Получаем слеюущие сообщения
- if (params.offset > result.data.response.count) {
- return messages;
- }
- }
- }
- /**
- * Получаем список всех диалогов
- * @param {string} token - токен пользователя
- * @returns {number} Количество диалогов
- * @returns {object} Список диалогов
- *
- * @throws Функция выбросит исключение, если на ВК вернет ошибку
- */
- async function getConversations(token) {
- const params = {
- access_token: token,
- v: 5.103
- }
- const result = await axios.get("https://api.vk.com/method/messages.getConversations", {params});
- const count = result.data.response.count;
- const conversations = result.data.response.items;
- return {count, conversations};
- }
- (async() => {
- const token = "*Тут должен быть токен, но его нет*";
- const {count, conversations} = await getConversations(token);
- for (let data of conversations) {
- const peer_id = data.conversation.peer.id;
- const messages = await getMessages(peer_id, token);
- }
- })();