Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const axios = require('axios')
- // Данные от аккаунта
- const login = 'gistrec@mail.ru'
- const passwd = 'secret'
- let user_id; // Пользователь, кому шлем сообщения
- let access_token; // Токен аккаунта
- // ID пользователей, чьи статусы отслеживаем
- const users = [
- { id: '266510818', name: 'Ира Котова' },
- { id: '461168816', name: 'Warm Blanket'}
- ]
- // Статусы пользователей
- let statuses = [];
- /**
- * Получаем токен по логину и паролю
- */
- async function getToken() {
- // Параметры для запросы
- const params = {
- client_id: 2274003, // Данные от приложения андроид
- client_secret: 'hHbZxrka2uZ6jB1inYsH', // Данные от приложения андроид
- grant_type: 'password',
- username: login,
- password: passwd,
- scope: 'status,messages',
- v: 5.56
- }
- const response = await axios.get('https://oauth.vk.com/token', { params });
- if (response.data.access_token) {
- console.log('Токен успешно получен')
- user_id = response.data.user_id;
- access_token = response.data.access_token;
- }else {
- console.log('Не удалось получить токен')
- process.exit(1);
- }
- }
- /**
- * Получаем статусы пользователей
- * @param init - инициализация
- */
- async function checkStatuses(init = false) {
- // Для всех пользователей
- for (let user of users) {
- let params = { 'v': '5.92', access_token, user_id: user.id }
- const response = await axios.get('https://api.vk.com/method/status.get', {params});
- // Если статусы не совпадают
- if (response.data.response.text != statuses[user.id]) {
- statuses[user.id] = response.data.response.text;
- // Если это не инициализация скрипта (получение текущих статусов)
- if (!init) {
- params['message'] = `У пользователя ${user.name} новый статус: ${statuses[user.id]}`
- params['random_id'] = Math.floor(Math.random() * 1000);
- params['user_id'] = user_id;
- await axios.get('https://api.vk.com/method/messages.send', {params})
- console.log(params['message'])
- }else {
- console.log(`Статус пользователя ${user.name}: ${statuses[user.id]}`)
- }
- }
- }
- }
- /**
- * Функция запускает скрипт
- */
- async function start() {
- // Получаем токен
- await getToken();
- await checkStatuses(true);
- // Каждые 10 секунд проверяем статусы пользователей
- setInterval(checkStatuses, 10 * 1000);
- }
- start();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement