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)
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()
next()
вызывается несколько раз.Ок, с первым думаю разберусь, а со второй ошибкой что делать ?
Почему в 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 ({агент});
Спасибо
Самый полезный комментарий
vk.setOptions ({агент});