Code Monkey home page Code Monkey logo

vk-io's People

Contributors

alexxandergrib avatar awaitlink avatar dependabot[bot] avatar diastremskii avatar doritosxxx avatar iam-medvedev avatar kekenec avatar magicfun1241 avatar morb0 avatar mrzillagold avatar mvoevodskiy avatar negezor avatar nitreojs avatar oboshto avatar purplehorrorrus avatar raywave avatar rsboarder avatar saiv46 avatar theletslook avatar unfex avatar uprtdev avatar valnesfjord avatar wixty avatar xtcry avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vk-io's Issues

English Documentation?

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?

общий next для use on hears

Добрый день,
Использую updates.hear для обработки команд от клиента, такие как /start /help и т.д.
Столкнулся с проблемой
Если не вызывать next() в обработчике updates.hear,
то последующие навешанные обработчики всё равно вызываются:
updates.use
updates.on

Если определено что это команда клиента, то дальнейшие обработчики вызывать нет необходимости.
Можно ли с этим что-то сделать?
Спасибо

node 8.2.1
vk-io 4.0.0-beta.7
updates.longPolling

Ошибка метода wall.get при call:'execute'

Имеется такой код, где <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' }

Как отловить события ?

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()}`);
});

AuthError: invalid_request, Security Error

Все работало ок. А сегодня ночью как-то резко все сломалось.

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 для сторонних сервисов

При использовании 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

Некорректная работа Snippets

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? В официальной документации полезных советов найти не удалось :(

Cannot find module 'bufferutil' , 'utf-8-validate'

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

Captcha

Привет!

Юзаю авторизацию через логин/пароль, просит вводить капчу, хочу показать картинку пользователю и попросить ввести, но при запросе по url из payload.src (в captchaHandler) загружается новая капча и код со старой не подходит.

ЧЯДНТ?

Problem with captcha handler

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' }

context.isEvent() == false, когда происходит событие

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?

  1. Отлавливаю событие message в updates.on().
  2. Во время события вывожу в консоль context.isEvent()
  3. Получаю false, когда срабатывает chat_pin_message

What did you expect to happen?
Вывод в консоли true

What was the actual result?
Выводит false

Donate

Мне кажется, необходима информация, куда "говорить спасибо".

make class field for testing Webhook

image
Работаю с вашей библиотекой и возникла такая проблема. Для тестирования приложения необходимо перенаправлять URL с vk на сервер приложения. А в данной интерпретации сделать это невозможно. Отсюда предложение, почему бы не вынести URL api.vk в class field и подавать его в конструктор, дабы в new URL не подавать константы, да и для тестирования приложений отличное решение подавать baseURL в конструкторе

Check for upload_url

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

Error on install and use

  • fs in ./node_modules/vk-io/upload/helpers.js, ./node_modules/request/lib/har.js

To install it, you can run: npm install --save fs

Ошибка доступа vk.collect.wall.get

Если использовать токен приложения, и не важно с каким типом 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 должны работать от клиента

Похоже что context.hasText() работает некорректно.

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)

Обработчик description для market.add

используя
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 нужна дополнительная проверка, вырезание лишнего

После обновления до 4 версии при запуске скрипта получаю ошибку.

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')
})

Unhandled rejection ApiError: Invalid hash

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)

Calling methods from stream causes error

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

Explanation

Long polling does not work without updates.use being called

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?

  1. Initialized VK instance.
  2. Called .updates.hear('/test', () => console.log('yay!')).
  3. Posted a message to group.

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("Сохранить");
}

идет флуд бесконечный, из-за чего такое поведение может быть? логи чисты.

StickerAttachment не экстендит Attachment

Я думаю что из-за того, что в файле 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 сейчас отправку клавиатуры в сообщениях?
Если нет - будет ли в будущем?

ApiError: Application authorization failed: access_token has expired

Здравствуйте.
Столкнулся с ошибкой:
Application authorization failed: access_token has expired.

Как получил:

  1. Делаю запрос серверной авторизации для своего приложения;
  2. Получаю token и пишу его в глобальный объект методом .setToken(access_token);
  3. После этого делаю запрос wall.get;

Ожидаемый результат:
Объект соответствующий параметрам запроса.
Фактический результат:

{ 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);
    });

Не работает execute при авторизации

Вроде правильный код в 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);
});

Сбор вызовов методов в очередь для предотвращения 6-ой ошибки

Если вызвать много методов за раз, например как

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 } ] }

_conduct

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

Flags

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

Как получить прямую ссылку на изображение из context.attachment?

проблема с longpoll

Добрый день,
Обновился с 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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.