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

Созданный на 12 янв. 2018  ·  22Комментарии  ·  Источник: negezor/vk-io

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)

Самый полезный комментарий

vk.setOptions ({агент});

Все 22 Комментарий

if (message.isOutbox() || message.getChatId() !== 4 || !message.hasText() || message.getText()[0] !== '/') {
  await next();
}

По хорошему на проверки isOutbox вынести отдельно если не нужны исходящие сообщения.

if (message.isOutbox()) {
  return;
}

Теперь ошибок 2.

Handle polling update error: Error: next() called multiple times
at next (/home/bots/vk/node_modules/middleware-io/lib/middleware.js:69:11)
at stack.(anonymous function) (/home/bots/vk/node_modules/middleware-io/lib/middleware.js:80:34)
at vk.updates.on (/home/bots/vk/vk.js:376:15)
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:228:7)


Handle polling update error: TypeError: Cannot read property 'split' of null
at vk.updates.on (/home/bots/vk/vk.js:200:33)
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:228:7)

Как в целом выглядит код?

Вы про 376 строку ?
Перед ней куча проверок на совпадение различного текста и на 376 строке стоит else await next();
Т.Е. Если не найдется ни одного совпадения делать await next()

  1. Ошибка указывает на то что next() вызывается несколько раз.
  2. Попытка обратится к split от null. Думаю логично что это из-за того что нет текста.

Ок, с первым думаю разберусь, а со второй ошибкой что делать ?
Почему в message.getText() я получаю null ?

Потому что текст отсутствует.

А разве функция context.hasText() не должна это проверять ?

Метод hasText() вернёт true если текст есть, а иначе false. Как я уже сказал проблема в череде проверок.

Ну последовательность проверок я взял вашу, и на ней и была проблема.

if (message.isOutbox() || message.getChatId() !== 4 || !message.hasText() || message.getText()[0] !== '/') {
  await next();
}

Я не могу видеть всей картины с таким кодом. Ошибка есть потому что условия неправильно расставлены или полное непонимание как работают Promise middleware.

Переделал структуру кода на более правильную с моей точки зрения, посмотрим может ошибка была как раз из за кривой структуры.

Еще заметил что куда-то пропала инфа о прокси.
Вы убрали их поддержку ?

Поддержка осталась, только теперь нужно использовать https агенты для проксирования.

Где можно найти информацию о том как это использовать?
И еще...
Похоже в ваших доках нет списка всех эвентов которые можно слушать.
Было бы не плохо если бы вы это добавили )

Ну вообще достаточно загуглить https proxy agent, думаю позже сделаю.

Нету времени почти совсем на создание документации, но думаю как нибудь получится.

Снова появилась нужда в использовании прокси...
Можете показать пример их использования с вашей библиотекой?

Нужно передать имплементацию agent в опции. Для этого может подойти модуль https-proxy-agent.

В какие опции ?

vk.setOptions ({агент});

Спасибо

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

Bobrovskih picture Bobrovskih  ·  3Комментарии

T1MOXA picture T1MOXA  ·  29Комментарии

nitreojs picture nitreojs  ·  3Комментарии

SOS
helix-team picture helix-team  ·  4Комментарии

zardoy picture zardoy  ·  18Комментарии