vkapi-lib
Библиотека для работы с 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)
})
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) - путь к файлу на диске | URLoptions
(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 timestamptext
(string) - текст сообщенияattachments
(object) - вложения сообщенияrandom_id
(int) - значение random_id
, переданное отправителемsender_id
(int) - иднтификатор отправителяout
(bool) - флаг исходящего сообщения
Методы объекта message
read()
delete()
spam()
restore()
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)
Методы
text(text, connect)
photo(data...)
video(data...)
audio(data...)
doc(data...)
voice(data...)
graffiti(data...)
wall(post...)
market(product...)
geo(lat, long)
forward(message...)
send(peer)
text
(string) - текст сообщенияconnect
(bool) - задание коннектацииdata
(string, object) - путь к файлу на диске | URL | идентификатор в VK (переменное количество аргументов, каждое вложение заданного типа через запятую)post
(string) - идентификатор поста в VKproduct
(string) - идентификатор товара/магазина в VKlat
(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)