Closed T1MOXA closed 6 years ago
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({ agent });
Спасибо
Node - v9.2.0 VK-IO - 4.0.0-alpha.8
Сама проверка:
(Ошибка указывает на последнюю строку)