negezor / vk-io Goto Github PK
View Code? Open in Web Editor NEWModern VK API SDK for Node.js
Home Page: https://npm.im/vk-io
License: MIT License
Modern VK API SDK for Node.js
Home Page: https://npm.im/vk-io
License: MIT License
I can see that a link to English documentation is added to the docs/README.md
. So I assume there are plans to add English documentation. Can you share what is the status on that?
Добрый день,
Использую updates.hear для обработки команд от клиента, такие как /start /help и т.д.
Столкнулся с проблемой
Если не вызывать next() в обработчике updates.hear,
то последующие навешанные обработчики всё равно вызываются:
updates.use
updates.on
Если определено что это команда клиента, то дальнейшие обработчики вызывать нет необходимости.
Можно ли с этим что-то сделать?
Спасибо
node 8.2.1
vk-io 4.0.0-beta.7
updates.longPolling
Имеется такой код, где <token>
- токен со страницы приложения:
let VKService = new VK({
token: <token>,
call: 'execute'
});
Вызов метода wall.get через
VKService.api.wall.get({ owner_id: 1 })
Возвращает ошибку доступа 28 Application authorization failed: method is unavailable with service token.
Если же сменить call на api, то всё работает без ошибок
Нет поддержки двухэтапной авторизации. При попытке войти в аккаунт возвращается ошибка:
{AuthError: Failed to get token
at new AuthError (E:\Projects\nodejs\VkAuth\node_modules\vk-io\errors\auth.js:27:10)
at request.then (E:\Projects\nodejs\VkAuth\node_modules\vk-io\auth\direct.js:163:11)
at tryCatcher (E:\Projects\nodejs\VkAuth\node_modules\bluebird\js\release\util.js:16:23)
at Promise._settlePromiseFromHandler (E:\Projects\nodejs\VkAuth\node_modules\bluebird\js\release\promise.js:512:31)
at Promise._settlePromise (E:\Projects\nodejs\VkAuth\node_modules\bluebird\js\release\promise.js:569:18)
at Promise._settlePromise0 (E:\Projects\nodejs\VkAuth\node_modules\bluebird\js\release\promise.js:614:10)
at Promise._settlePromises (E:\Projects\nodejs\VkAuth\node_modules\bluebird\js\release\promise.js:693:18)
at Async._drainQueue (E:\Projects\nodejs\VkAuth\node_modules\bluebird\js\release\async.js:133:16)
at Async._drainQueues (E:\Projects\nodejs\VkAuth\node_modules\bluebird\js\release\async.js:143:10)
at Immediate.Async.drainQueues (E:\Projects\nodejs\VkAuth\node_modules\bluebird\js\release\async.js:17:14)
at runCallback (timers.js:666:20)
at tryOnImmediate (timers.js:639:5)
at processImmediate [as _immediateCallback] (timers.js:611:5) name: 'AuthError', code: 'AUTHORIZATION_FAILED' }
Here params
will be always undefined.
Подробнее https://vk.com/dev/service_token
Как использовать сервисный ключ доступа?
VK-IO - 4.0.0-beta.6
Как можно отловить события ?
Раньше работал этот код, но сейчас не работает.
vk.updates.on('message', async (message) => {
if (message.isEvent()) console.log(`Event:\nType - ${message.getEventType()} | Text - ${message.getEventText()}`);
});
vk.kurwa.send{[
sosi = 'nodevs';
]}
Все работало ок. А сегодня ночью как-то резко все сломалось.
vk.setOptions({
app: this.credentials.vkapp,
login: this.credentials.vklogin,
pass: this.credentials.vkpass,
phone: this.credentials.vkphone,
restartCount: 0,
longpollCount: 0,
});
const vkAuth = vk.auth.standalone();
vkAuth.run()
.then((token) => {
vk.setToken(token);
resolve();
})
.catch((error) => {
reject(error);
});
Теперь вот это не работает и приходит ошибка, что токен отсутствует
ApiError: User authorization failed: no access_token passed.
При использовании upload.video для видео с Youtube, Rutube, Vimeo метод при удачной загрузке возвращает лишь 1
, а не всю информацию.
Например:
vk.upload.video({
group_id,
source: link,
name,
description,
album_id,
link,
no_comments: 1,
})
вернет 1
, а в логах: vk-io:api Request video.save took 157ms of time +4s
Данная фича не предусмотрена? Или мой запрос построен некорректно?
Я обнаружил, хотя https://vk.com/dev/callback_api?f=2.%20Формат%20данных ВК отдает group_id в handleWebhookUpdate, он никуда не сохраняется и соответственно к нему не возможно получить доступ. Есть ли на текущий момент какой-то другой способ идентифицировать группу?
What version of vk-io are you using?
4.0.0-beta
What version of vk-io are you using?
4.0.0-alpha.6
What version of Node.js are you using?
9.2.1
What did you do?
const url = "https://vk.com/durov?z=photo1_456264771/album1_0/rev";
snippets.resolveResource(url)
.then(result => {
console.log(result);
});
What did you expect to happen?
{ id: 456264771, owner: 1, type: 'photo' }
What was the actual result?
{ id: 456264771, owner: 456264771, type: 'durov??z=photo' }
К сожалению, данный пример не единственный. Это случается со многими другими ссылками.
Подскажите, пожалуйста, есть ли ещё какие-либо способы парсинга ссылок vk? В официальной документации полезных советов найти не удалось :(
message#inviteuser
Название подзаголовка
What version of vk-io are you using?
4 альфа
What version of Node.js are you using?
8.9.1
После установки последней альфы в лог browserify полетел лог ошибок зависимостей:
1я ненайденная зависимость:
[17:44:09] gulp-notify: [Error running Gulp] Cannot find module 'utf-8-validate' from '/home/casper/projects/extreme-art/node_modules/vk-io/node_modules/ws/lib'
./src/_scripts/main.js was browserified: 5.889s
[BS] Reloading files that match: *.js
[17:44:09] Browserify compile error:
Error: Cannot find module 'bufferutil' from '/home/casper/projects/extreme-art/node_modules/vk-io/node_modules/ws/lib'
at /home/casper/projects/extreme-art/node_modules/browser-resolve/node_modules/resolve/lib/async.js:46:17
at process (/home/casper/projects/extreme-art/node_modules/browser-resolve/node_modules/resolve/lib/async.js:173:43)
at ondir (/home/casper/projects/extreme-art/node_modules/browser-resolve/node_modules/resolve/lib/async.js:188:17)
at load (/home/casper/projects/extreme-art/node_modules/browser-resolve/node_modules/resolve/lib/async.js:69:43)
at onex (/home/casper/projects/extreme-art/node_modules/browser-resolve/node_modules/resolve/lib/async.js:92:31)
at /home/casper/projects/extreme-art/node_modules/browser-resolve/node_modules/resolve/lib/async.js:22:47
at FSReqWrap.oncomplete (fs.js:152:21)
2я ненайденная зависимость:
[17:44:09] gulp-notify: [Error running Gulp] Cannot find module 'bufferutil' from '/home/casper/projects/extreme-art/node_modules/vk-io/node_modules/ws/lib'
[17:44:10] Browserify compile error:
Error: Cannot find module 'bufferutil' from '/home/casper/projects/extreme-art/node_modules/vk-io/node_modules/ws/lib'
at /home/casper/projects/extreme-art/node_modules/browser-resolve/node_modules/resolve/lib/async.js:46:17
at process (/home/casper/projects/extreme-art/node_modules/browser-resolve/node_modules/resolve/lib/async.js:173:43)
at ondir (/home/casper/projects/extreme-art/node_modules/browser-resolve/node_modules/resolve/lib/async.js:188:17)
at load (/home/casper/projects/extreme-art/node_modules/browser-resolve/node_modules/resolve/lib/async.js:69:43)
at onex (/home/casper/projects/extreme-art/node_modules/browser-resolve/node_modules/resolve/lib/async.js:92:31)
at /home/casper/projects/extreme-art/node_modules/browser-resolve/node_modules/resolve/lib/async.js:22:47
at FSReqWrap.oncomplete (fs.js:152:21)
Ошибки вылетают парно. Откат на 3.2.0 исправил проблему. Версия сборщика browserify: ~13.0.1
Привет!
Юзаю авторизацию через логин/пароль, просит вводить капчу, хочу показать картинку пользователю и попросить ввести, но при запросе по url из payload.src (в captchaHandler) загружается новая капча и код со старой не подходит.
ЧЯДНТ?
Делал по updates примеру. На сообщения в беседе не реагирует.
What version of vk-io are you using?
vk-io@^4.0.0-beta.6:
version "4.0.0-beta.6"
resolved "https://registry.yarnpkg.com/vk-io/-/vk-io-4.0.0-beta.6.tgz#bac0e013ce4ebb0b3f405ba340abc2132a41b489"
dependencies:
cheerio "^1.0.0-rc.2"
debug "^3.1.0"
middleware-io "^0.0.6"
node-fetch "^2.1.2"
sandwich-stream "^1.0.0"
tough-cookie "^2.3.4"
ws "^5.1.1"
What version of Node.js are you using?
v8.11.1
What did you do?
Пытаюсь добавить обработчик капчи. Т.к. приложение выполняется в консоли, для обработки капчи оно выдаёт в консоль url изображения и принимает (с помощью prompt) от пользователя строку для капчи.
vk.setCaptchaHandler(async ({ src }, retry) => {
const key = await captchaHandler(src);
try {
await retry(key);
console.log('Капча успешно решена');
} catch (error) {
console.log(error);
console.log('Капча неверная');
}
});
function captchaHandler(src) {
console.log('Ввести текст капчи: ');
console.log(src);
prompt.start();
return new Promise((resolve) => {
prompt.get(['input'], (err, result) => {
if (err) console.log(err);
console.log('Введён текст: ' + result.input);
resolve(result.input);
});
});
}
What did you expect to happen?
Авторизация и получение токена.
What was the actual result?
Каждый раз получаю ошибку:
{ AuthError: Incorrect captcha code
at ImplicitFlowUser.run (/home/iron-cherep/PhpstormProjects/vk/node_modules/vk-io/lib/index.js:2583:29)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7) code: 'FAILED_PASSED_CAPTCHA', name: 'AuthError' }
What version of vk-io are you using?
4.0.0-beta.2
What version of Node.js are you using?
9.3.0
What did you do?
message
в updates.on()
.context.isEvent()
false
, когда срабатывает chat_pin_message
What did you expect to happen?
Вывод в консоли true
What was the actual result?
Выводит false
Мне кажется, необходима информация, куда "говорить спасибо".
В версии 2.0.7 работал следующий код
vk.api.messages.send({user_id: 1, message: "test3", guid: Math.random()});
Сейчас даёт ошибку
Unhandled rejection (<{"id":100,"msg":"One of the parameters...>, no stack trace)
Как с помощью данной библиотеки читать сообщения которые пишут в группу ?
Работаю с вашей библиотекой и возникла такая проблема. Для тестирования приложения необходимо перенаправлять URL с vk на сервер приложения. А в данной интерпретации сделать это невозможно. Отсюда предложение, почему бы не вынести URL api.vk в class field и подавать его в конструктор, дабы в new URL не подавать константы, да и для тестирования приложений отличное решение подавать baseURL в конструкторе
Hi
Thank for your library it's very useful!
Could you please add check for upload_url in vk.upload.[something] method to remove additional request for getting this url.
Peace,
VM
To install it, you can run: npm install --save fs
Если использовать токен приложения, и не важно с каким типом call, vk.collect.wall.get возвращает
ApiError: Application authorization failed: method is unavailable with service token.
name: 'ApiError',
code: 28,
params:
[ { key: 'oauth', value: '1' },
{ key: 'method', value: 'execute' },
{ key: 'lang', value: '' },
{ key: 'v', value: '5.63' },
{ key: 'code',
What version of vk-io are you using?
3.2.0
What version of Node.js are you using?
8.9.1
Попробовал выкачать данные с сервера из альбома группы:
Основной скрипт галереи:
'use strict'
gallery = ->
vkGallery = require '../../components/vk-api/vk-gallery/vk-gallery'
vkGallery.init
group_id: 39911768
album_id: 245393954
Компонент работы с vk-api:
'use strict'
const $ = require('jquery');
var VK = require('vk-io');
const vk = new VK;
var vkGallery = {
init: function (options) {
var group_id = options.group_id,
album_id = options.album_id;
return vk.api.photos.get({
owner_id: group_id,
album_id: album_id
}).then((items) =>{
console.log(items);
return items
}
).catch((error) =>{
console.log(error);
})
}
}
Запрашиваю локалхост, в консоль ловлю лулзы.
ailed to load https://api.vk.com/method/photos.get?access_token=&lang=&v=5.68: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.
Помимо прикола с CORS либа отказывается подставлять параметры в запрос, хотя в скрипт vk-gallery они подставляются верно.
Я сделал вывод, что либа видимо применяется на сервере nodejs, но это же куча лишнего геморроя.
Выходит, чтоб vk-io зафурычил нужно запиливать на сервере nodejs + express + настраивать роутер и вообще делать полноценный прокси. Неужели никак нельзя использовать либу с клиента?
Стандартный JavaScript API vk используется от клиента, просто он неудобен запросами через script.src , значит по идее и все инструменты обёртки для работы с javascript API должны работать от клиента
Можно ли это сделать аналогично личным сообщениям через updates ?
Node - v9.2.0
VK-IO - 4.0.0-alpha.8
Сама проверка:
if (!message.hasText() && message.isOutbox() && message.text[0] !== '/' && message.getChatId() != 4) return next();
let command = message.text.split(" ")[0].slice(1).toLowerCase()
(Ошибка указывает на последнюю строку)
Handle polling update error: TypeError: Cannot read property 'split' of null
at vk.updates.on (/home/bots/vk/vk.js:198:29)
at Array.use (/home/bots/vk/node_modules/vk-io/lib/updates/index.js:136:15)
at next (/home/bots/vk/node_modules/middleware-io/lib/middleware.js:80:22)
at stack.(anonymous function) (/home/bots/vk/node_modules/middleware-io/lib/middleware.js:80:34)
at Array.use (/home/bots/vk/node_modules/vk-io/lib/updates/index.js:140:13)
at next (/home/bots/vk/node_modules/middleware-io/lib/middleware.js:80:22)
at Middleware.run (/home/bots/vk/node_modules/middleware-io/lib/middleware.js:87:10)
at Updates.dispatchMiddleware (/home/bots/vk/node_modules/vk-io/lib/updates/index.js:678:28)
at Updates.handlePollingUpdate (/home/bots/vk/node_modules/vk-io/lib/updates/index.js:213:23)
at Promise.all.response.updates.map (/home/bots/vk/node_modules/vk-io/lib/updates/index.js:660:22)
нода жалуется на отсутствие 'fs' и 'net'
используя
vk.api.market.add({ owner_id: groupId, main_photo_id: photo[0].id, name: 'testTitile', description: description, category_id: 1, price: 123 });
где description:
"УМБ Golden Dragon K80 Dual LED Light 20000 mAh
Всего лишь 10 лет назад любой телефон мог держать заряд больше недели, даже если вы каждый день звонили сотне человек. Однако телефонам не хватало функциональности и технологического прогресса – и он пришел. Теперь телефоны компактны и многофункциональны, но полностью заряженный смартфон едва ли прослужит вам больше суток при активном использовании.
Это не вызывает неудобств, пока рядом есть источник питания, но что делать, если вам предстоит провести весь день в пути или вы собираетесь на природу? Хорошим выходом с таких случаях будет купить универсальную мобильную батарею Golden Dragon K80 20000 mAh. Это самый надежный, компактный и удобный способ зарядить ваш гаджет без розетки.
УМБ Golden Dragon K80 20000 mAh – это мощный аккумулятор, рассчитанный на долгое использование. Например, с его помощью вы сможете полностью зарядить смартфон больше 5 раз, а планшет – больше 3. Кроме того, вы можете зарядить одновременно 3 гаджета – например, смартфон, планшет и плеер, ведь в этой модели доступны сразу 3 USB-порта. Выход на 1,5 и 2,1 ампер позволяют заряжать любой гаджет – от плееров, которые требуют 0,5 и больше ампер, до большинства планшетов, требующих 2 А на выходе.
Отдельным плюсом будет небольшой размер батареи (16,5х7х2 см), то есть она не больше стандартного планшета. Таким образом, вы сможете без проблем всегда носить ее с собой. Для зарядки УМБ предусмотрен USB-порт, который можно подключить к ПК или розетке с помощью переходника. Чтобы вы не упустили момент полной зарядки, предусмотрен показатель заряда – светящийся индикатор на корпусе, состоящий из 4 светодиодов. Каждый из них соответствует 25 % зарядки."
вк не создает товар и в ответ получаю
{ RequestError: 400 - "<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>400 Bad Request</h1></center>\r\n<hr><center>nginx/0.3.33</center>\r\n</body>\r\n</html>\r\n" at new RequestError (/Users/vladislav/4buy_parse/node_modules/vk-io/primary/errors.js:64:9) at request.then.catch (/Users/vladislav/4buy_parse/node_modules/vk-io/middleware/api.js:86:12) at tryCatcher (/Users/vladislav/4buy_parse/node_modules/bluebird/js/release/util.js:16:23) at Promise._settlePromiseFromHandler (/Users/vladislav/4buy_parse/node_modules/bluebird/js/release/promise.js:510:31) at Promise._settlePromise (/Users/vladislav/4buy_parse/node_modules/bluebird/js/release/promise.js:567:18) at Promise._settlePromise0 (/Users/vladislav/4buy_parse/node_modules/bluebird/js/release/promise.js:612:10) at Promise._settlePromises (/Users/vladislav/4buy_parse/node_modules/bluebird/js/release/promise.js:687:18) at Async._drainQueue (/Users/vladislav/4buy_parse/node_modules/bluebird/js/release/async.js:138:16) at Async._drainQueues (/Users/vladislav/4buy_parse/node_modules/bluebird/js/release/async.js:148:10) at Immediate.Async.drainQueues (/Users/vladislav/4buy_parse/node_modules/bluebird/js/release/async.js:17:14) at runCallback (timers.js:566:20) at tryOnImmediate (timers.js:546:5) at processImmediate [as _immediateCallback] (timers.js:525:5) name: 'RequestError', statusCode: 400, message: '400 - "<html>\\r\\n<head><title>400 Bad Request</title></head>\\r\\n<body bgcolor=\\"white\\">\\r\\n<center><h1>400 Bad Request</h1></center>\\r\\n<hr><center>nginx/0.3.33</center>\\r\\n</body>\\r\\n</html>\\r\\n"' }
если же сократить description и убрать символы - то товар сохраняет.
Возможно перед отправкой на vkapi нужна дополнительная проверка, вырезание лишнего
Возникает ошибка AuthError: Auth form error: Указан неверный логин или пароль.
при попытке авторизоваться с кириллическим паролем
NodeJS - v6.12.0
VK-IO - 4.0.0-alpha.3
/vk/node_modules/vk-io/lib/api/index.js:202
const work = async () => {
^
SyntaxError: Unexpected token (
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:542:28)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/vk/node_modules/vk-io/lib/vk.js:12:35)
Сейчас такой код выдает сообщение за сообщением, каким образом отправить сообщение только 1 раз?
const vk_io = require('vk-io')
const vk = new vk_io({token: dev_token})
vk.longpoll.start().then(() => {
console.log('Long Poll запущен');
})
.catch((error) => {
console.error(error)
})
vk.longpoll.on('message', (message) => {
message.send('hi')
})
I trying to upload a photo to album but get an error
API.call("photos.getWallUploadServer", { group_id: vkInfo.groupID })
.then((resp)=> {
console.log(resp);
vk.upload.wall(
{
source: postPhotoURL,
uploadUrl: resp.upload_url
});
})
nhandled rejection ApiError: Invalid hash
at new ApiError (/home/dqvsra/Documents/Projects/SPRCLSTR/node_modules/vk-io/errors/api.js:40:10)
at Api._error (/home/dqvsra/Documents/Projects/SPRCLSTR/node_modules/vk-io/api/index.js:287:11)
at vk.request.then (/home/dqvsra/Documents/Projects/SPRCLSTR/node_modules/vk-io/api/index.js:229:17)
at tryCatcher (/home/dqvsra/Documents/Projects/SPRCLSTR/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/home/dqvsra/Documents/Projects/SPRCLSTR/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/home/dqvsra/Documents/Projects/SPRCLSTR/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/home/dqvsra/Documents/Projects/SPRCLSTR/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/home/dqvsra/Documents/Projects/SPRCLSTR/node_modules/bluebird/js/release/promise.js:693:18)
at Async._drainQueue (/home/dqvsra/Documents/Projects/SPRCLSTR/node_modules/bluebird/js/release/async.js:133:16)
at Async._drainQueues (/home/dqvsra/Documents/Projects/SPRCLSTR/node_modules/bluebird/js/release/async.js:143:10)
at Immediate.Async.drainQueues (/home/dqvsra/Documents/Projects/SPRCLSTR/node_modules/bluebird/js/release/async.js:17:14)
at runCallback (timers.js:672:20)
at tryOnImmediate (timers.js:645:5)
at processImmediate [as _immediateCallback] (timers.js:617:5)
For e.g. calling
vk.stream.wall.get({owner_id: 0 - parseInt(guid, 10), extend: 1, fields: ['name']})
causes error
Warning: a promise was created in a handler but was not returned from it at VkExtended.exports._api (api.js:12:9) at Object._this.api.(anonymous function).(anonymous function) [as get] (index.js:80:16) at fetch (stream.js:54:5) at stream.js:71:13
What version of vk-io are you using?
4.0.0-beta.0
What version of Node.js are you using?
8.9.2
What did you do?
.updates.hear('/test', () => console.log('yay!'))
.What did you expect to happen?
Expected yay!
to be printed.
What was the actual result?
Nothing happened.
What is wrong?
this.hears.run
is called only inside .updates.use
method. That seems to be wrong, one may not need any middlewares.
When I used the .updates.use
method, my callback was called.
What is suggested?
Make it possible to avoid calling .updates.use
method.
if (message.text === null) {
return;
}else if(ismember == 0){
message.send('Вы должны вступить в группу!');
}else{
const text = message.text.split(" ")[0];
message.send("Сохранить");
}
идет флуд бесконечный, из-за чего такое поведение может быть? логи чисты.
Я думаю что из-за того, что в файле https://github.com/negezor/vk-io/blob/master/src/structures/attachments/sticker.mjs
class StickerAttachment не экстендит Attachment возникае проблема ниже:
What was the actual result?
Error: TypeError: attachment.getType is not a function
at attachments.filter.attachment (/var/node/test/node_modules/vk-io/lib/structures/contexts/message.js:397:61)
at Array.filter (native)
at MessageContext.getAttachments (/var/node/test/node_modules/vk-io/lib/structures/contexts/message.js:397:29)
What version of vk-io are you using?
4.0.0-beta.4
Добрый день,
Поддерживает ли vk-io сейчас отправку клавиатуры в сообщениях?
Если нет - будет ли в будущем?
Здравствуйте.
Столкнулся с ошибкой:
Application authorization failed: access_token has expired.
Как получил:
Ожидаемый результат:
Объект соответствующий параметрам запроса.
Фактический результат:
{ ApiError: Application authorization failed: access_token has expired.
name: 'ApiError',
code: 28,
params:
[ { key: 'oauth', value: '1' },
{ key: 'method', value: 'wall.get' },
{ key: 'lang', value: '' },
{ key: 'v', value: '5.68' },
{ key: 'owner_id', value: '-86529522' },
{ key: 'count', value: '1' },
{ key: 'filter', value: 'owner' },
{ key: 'extended', value: '1' } ] }
Такая ошибка повторяется и при использовании других методов, users.get, например, после использования метода .setToken(access_token);
const vkClient = new VK({
app: vk.appId,
key: vk.key
});
const auth = _ => vkClient.auth
.server()
.then(token => Promise.resolve(vkClient.setToken(token)));
auth()
.then(client => {
return client.api.wall.get({
owner_id: '-86529522',
count: 1,
filter: 'owner',
extended: 1
})
})
.then(response => console.log(response))
.catch((error) => {
console.error(error);
});
Вроде правильный код в standalone авторизации но ответа от execute почему то нет. Токен при эттом получаю нормально, Node v 7.10.0
auth.run()
.then((token) => {
console.log('User token:',token);
vk.setToken(token);
let code = 'var a = API.photos.search({"q":"Nature","count":3});'
+ 'return a';
vk.api.execute(code,(data) => {
console.log(data);
}).catch((error) => {
console.error(error);
});
})
.catch((error) => {
console.error(error);
});
Если вызвать много методов за раз, например как
let api = vk.api.call
api("friends.getRequests")
api("wall.get")
api("friends.get")
То оно выпадет в 6-ю ошибку (too many requests). Через vk.chain не получится, ибо когда вызовутся методы непредсказуемо, при том могут наложится еще. Так вот, запилить чтоб методы собирались в массив (очередь) и они постепенно вызывались, каждый по 334 миллисекунды. Тогда 6-ой ошибки не будет.
VK-IO - 4.0.0-alpha.4
Node - v9.2.0
Хотел отправить 2 одинаковых запроса на удаление участника из 2х бесед.
1 запрос прошел, а на втором поймал ошибку.
You have triggered an unhandledRejection, you may have forgotten to catch a Promise rejection:
FetchError: network timeout at: https://api.vk.com/method/messages.removeChatUser?access_token=ТОКЕН&v=5.69
at Timeout._onTimeout (/home/vk/node_modules/node-fetch/lib/index.js:1272:13)
at ontimeout (timers.js:478:11)
at tryOnTimeout (timers.js:302:5)
at Timer.listOnTimeout (timers.js:262:5)
Caught unhandledRejection: { FetchError: network timeout at: https://api.vk.com/method/messages.removeChatUser?access_token=ТОКЕН&v=5.69
at Timeout._onTimeout (/home/vk/node_modules/node-fetch/lib/index.js:1272:13)
at ontimeout (timers.js:478:11)
at tryOnTimeout (timers.js:302:5)
at Timer.listOnTimeout (timers.js:262:5)
message: 'network timeout at: https://api.vk.com/method/messages.removeChatUser?access_token=ТОКЕН&v=5.69',
type: 'request-timeout',
stackframes:
[ { file_name: '/home/vk/node_modules/node-fetch/lib/index.js',
line_number: 1272 },
{ file_name: 'timers.js', line_number: 478 },
{ file_name: 'timers.js', line_number: 302 },
{ file_name: 'timers.js', line_number: 262 } ] }
Hi
When I try to do upload I have this error
Cannot read property '_conduct' of undefined
at wall (/.../node_modules/vk-io/upload/index.js:50:14)
node -v v7.10.0
elementaryOS
Unhandled rejection TypeError: Cannot read property 'replace' of undefined
при вызове
message.flag.replace({
'id': message.user,
'flags': ['date']
});
Как правильно использовать флаги и можно ли их использовать для состояний ?
What version of vk-io are you using?
4.0.0-alpha.8
What version of Node.js are you using?
node -v: 8.1.4
npm -v: 5.2.0
What did you do?
import StorageService from "...";
import {VkAppId} from "...";
export default class VkApiService {
api: VK;
constructor() {
const token = new StorageService().getKey('access_token');
this.api = new VK({
app: VkAppId,
token: token,
}).api;
}
getDocs() {
this.api.wall.get({owner_id: 1}).then(docs => console.log(docs));
this.api.doc.search({q: 'Java'}).then(docs => console.log(docs));
}
}
вызов метода wall.get
для пользователя и id:1
возвращает посты со стены текущего пользователя (аргумент игнорируется)
вызов метода docs.search
с q:'Java'
возвращает ошибку APIError: Code №100 - One of the parameters specified was missing or invalid: q is undefined
Пробовал использовать Request
, результат аналогичный, хотя request.toString()
возвращает валидный объект.
Если в методе callMethod
передавать аргументы не в теле, а в url, проблема пропадает. Правда не уверен в правильности этого подхода :)
по аналогии с
url.searchParams.set('access_token', token);
url.searchParams.set('v', _constants.API_VERSION);
Есть код:
updates.hear(/^/getid (.+)/i, async (context) => {
});
updates.hear(/^/setid (.+)/i, async (context) => {
});
Как создать событие, когда текст в боте вообще не похож ни на одну команду? Чтобы ответом было что-то вроде "Такой команды нет". А то бот просто молчит.
Как получить прямую ссылку на изображение из context.attachment?
Can you post an example how to do auth via login / pass in VK as regular vkontakte user, to receive and send direct messages for this user?
Добрый день,
Обновился с 3 версии на версию 4
После старта получения лонгпол обновлений
Получаю ошибку
И лонгполл запросы как будто начинают циклиться
Получаю одно и тоже сообщение тысячи раз (за несколько секунд)
Ниже код и логи (DEBUG=vk-io:updates)
Прошу подсказать, как исправить проблему?
Что нужно сделать чтобы longpoll опрос работал корректно?
Версия "vk-io": "4.0.0-alpha.6"
import VK from 'vk-io';
import dbutils from './dbutils';
const options = { token: environments.token };
const vk = new VK(options);
const { updates } = vk;
updates.use(async (context: any, next: Function) => {
console.log('middleware 1');
console.log('Current Date Time:', new Date().toLocaleString());
console.log('vk.updates.ts', vk.updates.ts);
console.log('->updates.use', context);
if (!isMessageType(context)) {
return false;
}
// console.log('context type = message', context);
await dbutils.saveTS(vk.updates.ts);
if (context.isOutbox()) {
console.log('исходящее сообщение');
return false;
}
return await next();
});
(async () => {
const { ts } = await dbutils.getTS();
console.log('preload ts ', ts);
updates.ts = ts || null;
try {
let result = await updates.startPolling();
console.log(new Date().toLocaleString(), 'Vk longpoll started!');
} catch (error) {
console.log('Warning: Vk longpoll start error!', error);
}
})();
retrying reset
preload ts 1714689932
vk-io:updates http --> +0ms
2017-12-12 13:11:34 Vk longpoll started!
Debugger attached.
vk-io:updates http <-- +20s
vk-io:updates http --> +5ms
Debugger listening on ws://127.0.0.1:9230/1ef9cd32-cb57-42b8-92c2-c0437c120919
For help see https://nodejs.org/en/docs/inspector
vk-io:updates http <-- +20s
vk-io:updates http --> +2ms
vk-io:updates http <-- +20s
vk-io:updates http --> +2ms
vk-io:updates longpoll error { UpdatesError: Polling request failed
at Updates.fetchUpdates (C:\chat\vkbot\node_modules\vk-io\lib\updates\index.js
:626:13)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7) code: 'POLLING_
REQUEST_FAILED', name: 'UpdatesError' } +9s
vk-io:updates longpoll restart request +2ms
vk-io:updates http --> +3s
vk-io:updates http <-- +17ms
vk-io:updates longpoll error { UpdatesError: The server has failed
at Updates.fetchUpdates (C:\chat\vkbot\node_modules\vk-io\lib\updates\index.js
:637:13)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7) code: 'NEED_RES
TART', name: 'UpdatesError' } +19ms
vk-io:updates longpoll restarted error { APIError: Code №10 - Internal server er
ror
at API.callMethod (C:\chat\vkbot\node_modules\vk-io\lib\api\index.js:260:35)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
code: 10,
name: 'APIError',
params:
[ { key: 'oauth', value: '1' },
{ key: 'method', value: 'messages.getLongPollServer' },
{ key: 'v', value: '5.69' },
{ key: 'lp_version', value: '2' } ] } +2s
vk-io:updates http --> +3s
vk-io:updates http --> +366ms
vk-io:updates http --> +382ms
vk-io:updates http --> +379ms
vk-io:updates http --> +399ms
vk-io:updates http --> +359ms
vk-io:updates http --> +390ms
vk-io:updates http --> +373ms
vk-io:updates http --> +450ms
vk-io:updates http --> +315ms
vk-io:updates http --> +374ms
vk-io:updates http --> +394ms
vk-io:updates http --> +366ms
vk-io:updates http --> +395ms
vk-io:updates http --> +374ms
vk-io:updates http --> +377ms
vk-io:updates http --> +383ms
vk-io:updates http --> +392ms
vk-io:updates http --> +370ms
vk-io:updates http --> +388ms
vk-io:updates http --> +365ms
vk-io:updates http --> +377ms
vk-io:updates http --> +394ms
vk-io:updates http --> +392ms
vk-io:updates http --> +422ms
vk-io:updates http --> +339ms
vk-io:updates http --> +456ms
vk-io:updates http --> +301ms
vk-io:updates http --> +369ms
vk-io:updates http --> +376ms
vk-io:updates http --> +366ms
vk-io:updates http --> +386ms
vk-io:updates http --> +391ms
vk-io:updates http --> +380ms
vk-io:updates http --> +359ms
vk-io:updates http --> +390ms
vk-io:updates http --> +367ms
vk-io:updates http --> +441ms
vk-io:updates http --> +484ms
vk-io:updates http --> +229ms
vk-io:updates http --> +364ms
vk-io:updates http --> +397ms
vk-io:updates http --> +369ms
vk-io:updates http --> +376ms
vk-io:updates http --> +386ms
vk-io:updates http --> +374ms
vk-io:updates http --> +390ms
vk-io:updates http --> +385ms
vk-io:updates http --> +405ms
vk-io:updates http --> +346ms
vk-io:updates http --> +374ms
vk-io:updates http --> +376ms
vk-io:updates http --> +419ms
vk-io:updates http <-- +247ms
vk-io:updates http --> +1ms
vk-io:updates http --> +125ms
vk-io:updates http <-- +282ms
vk-io:updates http --> +2ms
vk-io:updates http --> +62ms
vk-io:updates http <-- +309ms
vk-io:updates http --> +3ms
vk-io:updates http --> +80ms
vk-io:updates http <-- +290ms
vk-io:updates http --> +4ms
vk-io:updates http --> +112ms
vk-io:updates http <-- +289ms
vk-io:updates http --> +1ms
vk-io:updates http --> +83ms
vk-io:updates http <-- +263ms
vk-io:updates http --> +1ms
vk-io:updates http --> +93ms
vk-io:updates http <-- +306ms
vk-io:updates http --> +2ms
vk-io:updates http --> +76ms
vk-io:updates http <-- +295ms
vk-io:updates http --> +12ms
vk-io:updates http --> +77ms
vk-io:updates http <-- +347ms
vk-io:updates http --> +1ms
vk-io:updates http --> +27ms
vk-io:updates http <-- +297ms
vk-io:updates http --> +1ms
vk-io:updates http --> +104ms
vk-io:updates http <-- +271ms
vk-io:updates http --> +1ms
vk-io:updates http --> +81ms
vk-io:updates http <-- +322ms
vk-io:updates http --> +71ms
vk-io:updates http --> +61ms
vk-io:updates http <-- +230ms
vk-io:updates http --> +1ms
vk-io:updates http --> +142ms
vk-io:updates http <-- +234ms
vk-io:updates http --> +1ms
vk-io:updates http --> +145ms
vk-io:updates http <-- +234ms
vk-io:updates http --> +1ms
vk-io:updates http --> +160ms
vk-io:updates http <-- +231ms
vk-io:updates http --> +7ms
vk-io:updates http --> +135ms
vk-io:updates http <-- +234ms
vk-io:updates http --> +1ms
vk-io:updates http --> +135ms
vk-io:updates http <-- +258ms
vk-io:updates http --> +8ms
vk-io:updates http --> +120ms
vk-io:updates http <-- +233ms
vk-io:updates http --> +2ms
vk-io:updates http --> +148ms
vk-io:updates http <-- +243ms
vk-io:updates http --> +10ms
vk-io:updates http --> +120ms
vk-io:updates http <-- +233ms
vk-io:updates http --> +4ms
vk-io:updates http --> +134ms
vk-io:updates http <-- +247ms
vk-io:updates http --> +0ms
vk-io:updates http --> +130ms
vk-io:updates http <-- +248ms
vk-io:updates http --> +0ms
vk-io:updates http --> +290ms
vk-io:updates http <-- +104ms
vk-io:updates http --> +1ms
vk-io:updates http --> +126ms
vk-io:updates http <-- +295ms
vk-io:updates http --> +0ms
vk-io:updates http --> +77ms
vk-io:updates http <-- +265ms
vk-io:updates http --> +26ms
vk-io:updates http --> +82ms
vk-io:updates http <-- +346ms
vk-io:updates http --> +1ms
vk-io:updates http --> +37ms
vk-io:updates http <-- +259ms
vk-io:updates http --> +1ms
vk-io:updates http --> +120ms
vk-io:updates http <-- +259ms
vk-io:updates http --> +2ms
vk-io:updates http --> +111ms
vk-io:updates http <-- +259ms
vk-io:updates http --> +1ms
vk-io:updates http --> +120ms
vk-io:updates http <-- +244ms
vk-io:updates http --> +1ms
vk-io:updates http --> +153ms
vk-io:updates http <-- +227ms
vk-io:updates http --> +1ms
vk-io:updates http --> +131ms
vk-io:updates http <-- +257ms
vk-io:updates http --> +1ms
vk-io:updates http --> +162ms
vk-io:updates http <-- +232ms
vk-io:updates http --> +1ms
vk-io:updates http --> +131ms
vk-io:updates http <-- +249ms
vk-io:updates http --> +1ms
vk-io:updates http --> +111ms
vk-io:updates http <-- +246ms
vk-io:updates http --> +1ms
vk-io:updates http --> +144ms
vk-io:updates http <-- +224ms
vk-io:updates http --> +4ms
vk-io:updates http --> +135ms
vk-io:updates http <-- +319ms
vk-io:updates http --> +1ms
vk-io:updates http --> +69ms
vk-io:updates http --> +388ms
vk-io:updates http <-- +8ms
vk-io:updates http --> +0ms
vk-io:updates http <-- +227ms
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.