vkapi-lib

1.5.0 • Public • Published

vkapi-lib

npm package

Библиотека для работы с VK API.

Содержание

Установка

npm install vkapi-lib

Подключение в проект:

const vk = require('vkapi-lib')

Методы

Инитализация с токеном

const API = new vk.API('ключ доступа')

В конструкторе можно указывать неограниченное число токенов (каждый токен как отдельный агрумент)

const API = new vk.API('ключ доступа1', 'ключ доступа2')

Авторизация по логину и паролю

let API
 
auth.password('login', 'password', resp => {
    if (resp.error) {
        return console.log(resp.error)
    }
    
    API = new vk.API(resp.access_token)
})

Authorization Code Flow (user | group)

const auth = new vk.Auth
 
let API
 
auth.acf(client_id, client_secret, redirect_uri, code, resp => {
    if (resp.error) {
        return console.log(resp.error)
    }
    
    API = new vk.API(resp.access_token)
})

Получение сервисного ключа доступа (Client Credentials Flow)

const auth = new vk.Auth
 
let API
 
auth.ccf(client_id, client_secret, grant_type, resp => {
    if (resp.error) {
        return console.log(resp.error)
    }
    
    API = new vk.API(resp.access_token)
})

Вызов метода VK API

call(method, options = {}, callback = this.default_callback, token)
  • method (string) - название метода
  • options (object) - параметры вызова
  • callback (function, string) - callback-функция (по умолчанию дефолтный каллбек)
  • token (int, string) - порядковый идентификатор токена (по порядку, указанному в конструкторе) | токен в строковом формате (необязательный параметр)

Пример использования:

API.call('users.get', {
    user_ids: 1
}, (error, response) => {
    if (error) {
        console.log(error)
    }
    
    console.log(response[0])
})
 
API.call('users.get', {
    user_ids: 1
}, 'console.log(error, response)')
 
API.call('users.get', {
    user_ids: 1
})
 
API.call('users.get')

Лонгполл

longpoll(callback, params, token)
  • callback (function) - callback-функция (по умолчанию дефолтный каллбек)
  • params (object) - параметры лонгполла
  • token (int, string)

Пример использования:

API.longpoll(data => {
    console.log(data)
})

Событие: новое сообщение

lp_message(callback, token)
  • callback (function) - callback-функция (по умолчанию дефолтный каллбек)
  • token (int, string)

Пример использования:

API.lp_message(message => {
    console.log(message)
})

Подробнее про объект message

Отправка сообщения

send(text, options, peer, callback, token)
  • text (string) - текст сообщения
  • options (object) - параметры отправки
  • peer (int, object) - адресат (user_id для пользователя, 2e9+chat_id для беседы, -group_id для сообщества) в числовом формате, либо объект сообщения, содерржащий в себе параметр peer_id
  • callback (function) - callback-функция (по умолчанию дефолтный каллбек) для возврата статуса отправления
  • token (int, string)

Пример использования:

API.lp_message(message => {
    API.send('Example', {
        forward_messages: message.id
    }, message)
})
 
API.send('Example', {}, 168557207)

Отправка стикера

sticker(sticker_id, peer, callback, token)
  • sticker_id (int) - идентификатор стикера
  • peer (int, object) - адресат (user_id для пользователя, 2e9+chat_id для беседы, -group_id для сообщества) в числовом формате, либо объект сообщения, содерржащий в себе параметр peer_id
  • callback (function) - callback-функция (по умолчанию дефолтный каллбек) для возврата статуса отправления
  • token (int, string)

Пример использования:

API.sticker(101, 168557207)

Методы загрузки медиа (подробнее)

// Загрузка фотографий в альбом
uploadPhoto(data, options, callback, token)
 
// Загрузка фотографий на стену
uploadPhotoOnWall(data, options, callback, token)
 
// Загрузка главной фотографии пользователя или сообщества
uploadOwnerPhoto(data, options, callback, token)
 
// Загрузка фотографии в личное сообщение
uploadMessagesPhoto(data, callback, token)
 
// Загрузка главной фотографии для чата
uploadChatPhoto(data, options, callback, token)
 
// Загрузка фотографии для товара
uploadMarketPhoto(data, options, callback, token)
 
// Загрузка фотографии для подборки товаров
uploadMarketAlbumPhoto(data, options, callback, token)
 
// Загрузка аудиозаписей
uploadAudio(data, options, callback, token)
 
// Загрузка видеозаписей
uploadVideo(data, options, callback, token)
 
// Загрузка документов
uploadDocs(data, options, callback, token)
 
// Загрузка документов на стену
uploadWallDocs(data, options, callback, token)
 
// Загрузка документа в личное сообщения
uploadMessagesDocs(data, options, callback, token) // в данный момент недоступно
 
// Загрузка обложки сообщества 
uploadOwnerCoverPhoto(data, options, callback, token)
  • data (string | array) - путь к файлу на диске | URL
  • options (object) - опции загрузки
  • callback (function) - callback-функция (по умолчанию дефолтный каллбек) для возврата статуса отправления
  • token (int, string)

Примеы использования:

API.uploadPhoto(['test1.jpg', 'https://nodei.co/npm/vkapi-lib.png'], {
    album_id: 169819278,
    group_id: 123396984
}, (error, response) => {
    if (error) {
        return console.log(error)
    }
    
    console.log(response)
})
 
API.uploadPhotoOnWall('https://nodei.co/npm/vkapi-lib.png', {
    group_id: 123396984
}, (error, response) => {
    if (error) {
        return console.log(error)
    }
    
    console.log(response)
})
 
API.uploadPhotoOnWall('test1.jpg', {
    group_id: 123396984
}, (error, response) => {
    if (error) {
        return console.log(error)
    }
    
    console.log(response)
})
 
API.uploadOwnerPhoto('test1.jpg', {
    owner_id: -123396984
}, (error, response) => {
    if (error) {
        return console.log(error)
    }
    
    console.log(response)
})
 
API.uploadMessagesPhoto('test1.jpg', (error, response) => {
    if (error) {
        return console.log(error)
    }
    
    console.log(response)
})
 
API.uploadChatPhoto('test1.jpg', {
    chat_id: 103
})
 
API.uploadMarketPhoto('test1.jpg', {
    group_id: -123396984,
    main_photo: true
})
 
API.uploadMarketAlbumPhoto('test1.jpg', {
    group_id: -123396984
})
 
API.uploadAudio('test.mp3', {
    artist: 'Usher feat. Lil\' Jon, Ludacris',
    title: 'Yeah!'
}, (error, response) => {
    if (error) {
        return console.log(error)
    }
    
    console.log(response)
})
 
API.uploadVideo('test.webm', {
    name: '.webm'
}, (error, response, upload) => {
    if (error) {
        return console.log(error)
    }
    
    console.log(response)
    
    upload(console.log)
}
 
API.uploadDocs('test.txt', {
    group_id: -123396984,
    title: 'Text file',
    tags: 'test, text, txt'
}, (error, response) => {
    if (error) {
        return console.log(error)
    }
    
    console.log(response)
})
 
API.uploadWallDocs('test.txt', {
    group_id: -123396984,
    title: 'Text file',
    tags: 'test, text, txt'
}, (error, response) => {
    if (error) {
        return console.log(error)
    }
    
    console.log(response)
})
 
API.uploadMessagesDocs('test.opus', {
    peer_id: 168557207,
    title: 'audio_message.opus',
    type: 'audio_message'
}, (error, response) => {
    if (error) {
        return console.log(error)
    }
    
    console.log(response)
})
 
API.uploadOwnerCoverPhoto('cover.png', {
    group_id: 123396984
})

Объект message

  • id (ing) - идентификатор сообщения
  • flags (int) - флаги сообщения
  • peer_id (int) - адресат
  • ts (int) - время UNIX timestamp
  • text (string) - текст сообщения
  • attachments (object) - вложения сообщения
  • random_id (int) - значение random_id, переданное отправителем
  • sender_id (int) - иднтификатор отправителя
  • out (bool) - флаг исходящего сообщения

Методы объекта message

read() // пометить сообщение как прочитанное
delete() // удалить сообщение
spam() // пометить сообщение как спам
restore() // восстановить удалённое сообщение (можно в течение 5 часов после удаления)
flag(flag) // проверка флага сообщения
getMedia(callback) // получение подробного объекта вложений сообщения
  • flag (int) - флаг (объект: LP_MESSAGE_FLAGS, API.flags) (подробнее)
  • callback (function) - callback-функция (по умолчанию дефолтный каллбек) для возврата статуса отправления

Примеы использования:

API.lp_message(message => {
    if (!message.flag(API.flags.OUTBOX)) {
        message.getMedia((error, response) => {
            if (error) {
                return console.log(error)
            }
 
            console.log(response)
        })
    }
})

Пример передаваемых getMedia данных в callback

read_state: 0,
  attachments:
   [ { type: 'photo',
       id: 456255039,
       album_id: -6,
       owner_id: 168557207,
       photo_75: 'https://pp.userapi.com/c638826/v638826207/4f93d/3IMgDciIdlk.jpg',
       photo_130: 'https://pp.userapi.com/c638826/v638826207/4f93e/yI5wtwl1qyw.jpg',
       photo_604: 'https://pp.userapi.com/c638826/v638826207/4f93f/f4DeBtdkj-A.jpg',
       photo_807: 'https://pp.userapi.com/c638826/v638826207/4f940/rJA41miL5Hw.jpg',
       photo_1280: 'https://pp.userapi.com/c638826/v638826207/4f941/J2gLGI92J0I.jpg',
       width: 1013,
       height: 599,
       text: '',
       date: 1498734394,
       post_id: 6223,
       item: 'photo168557207_456255039' },
     { type: 'audio',
       id: 456239534,
       owner_id: 168557207,
       artist: 'Xavier Wulf',
       title: 'Tortuga',
       duration: 158,
       date: 1492628273,
       content_restricted: 1,
       url: '',
       genre_id: 1001,
       is_hq: false,
       item: 'audio168557207_456239534' } ] }

Конструктор сообщений

message(token)
  • token (int, string)

Методы

// Задать текст сообщения
text(text, connect)
 
// Прикрепить изображения
photo(data...)
 
// Прикрепить видеозаписи
video(data...)
 
// Прикрепить аудизаписи
audio(data...)
 
// Прикрепить документы
doc(data...)
 
// Прикрепить голосовое сообщение (форматы: .ogg, .opus)
voice(data...)
 
// Прикрепить граффити (форматы: .jpg, .png, .gif)
graffiti(data...)
 
// Прикрепить запись на стене
wall(post...)
 
// Прикрепить товары
market(product...)
 
// Прикрепить геопозицию
geo(lat, long)
 
// Прикрепить сообщения
forward(message...)
 
// Отправить сообщение адресату
send(peer)
  • text (string) - текст сообщения
  • connect (bool) - задание коннектации
  • data (string, object) - путь к файлу на диске | URL | идентификатор в VK (переменное количество аргументов, каждое вложение заданного типа через запятую)
  • post (string) - идентификатор поста в VK
  • product (string) - идентификатор товара/магазина в VK
  • lat (float) - шитора на карте
  • long (float) - долгота на карте
  • 'message' (int, string, array) - идентификаторы сообщений для пересылки
  • peer (int, object) - адресат (user_id для пользователя, 2e9+chat_id для беседы, -group_id для сообщества) в числовом формате, либо объект сообщения, содерржащий в себе параметр peer_id

Пример использования:

API.message()
    .text('Test message')
    .photo('../test.jpg', 'photo168557207_456255039')
    .video('../test.webm')
    .audio('../test.mp3')
    .doc('../test.jpg')
    .voice('../test.opus')
    .graffiti('../test.png')
    .wall('wall-47590230_48')
    .market('product-13883743_256626')
    .geo(15,15)
    .forward(5918153, '5918009, 5916431', [5918409, 5918411, 5918412])
    .send(168557207) 

Readme

Keywords

Package Sidebar

Install

npm i vkapi-lib

Weekly Downloads

36

Version

1.5.0

License

MIT

Last publish

Collaborators

  • zaur_lumanov