node-vk-bot-api / node-vk-bot-api

🤖 VK bot framework for Node.js, based on Bots Long Poll API and Callback API.
https://npmjs.com/package/node-vk-bot-api
MIT License
243 stars 67 forks source link

Cannot read property 'toLowerCase' of undefined #16

Closed frct1 closed 6 years ago

frct1 commented 6 years ago

При попытке отписать какое-либо сообщение в группу на стороне сервера возникает ошибка

(node:2676) UnhandledPromiseRejectionWarning: Error: TypeError: Cannot read property 'toLowerCase' of undefined at VkBot.module.exports (C:\Users\79520\Desktop\wf\lib\methods\startPolling.js:39:11) at process._tickCallback (internal/process/next_tick.js:68:7)

bifot commented 6 years ago

Какой тип события? Это message_new от пользователя группы? Подробнее опиши кейс, пожалуйста.

frct1 commented 6 years ago

Да, идёт обработка message_new Вызов toLowerCase идёт в ./lib/utils/next:4 const message = ctx.message.body.toLowerCase() фиксит.

bot.event('message_new',(msgobj)=>{
    console.log(msgobj);
})

Подобное вовсе не работает, не вызывает колбэк. А вот по bot.on('message_new',cb) срабатывает, но дропает ошибку.

(node:30566) UnhandledPromiseRejectionWarning: TypeError: fn is not a function
    at fn (/var/www/wfbot/node_modules/node-vk-bot-api/lib/methods/command.js:8:18)

p.s: cb - действительно функция

Спасибо за внимание к ошибке.

bifot commented 6 years ago

Для обработки message_new используется метод .on, который срабатывает у тебя, но неправильно, потому что он принимает исключительно middlewares, а ты передал строчку message_new, из-за чего и вылетает ошибка.

Вот обработка любого сообщения:

bot.on((ctx) => {
  ctx.reply('Hello, world!')
})
bifot commented 6 years ago

Изначально event метод не предназначался для таких кейсов, но я выпустил багфикс, теперь можно использовать bot.event('message_new', (ctx) => {}), но это бессмысленно, потому что для такого обработчика есть сахар в виде bot.on((ctx) => {}). Доступно с версии 2.0.4. https://github.com/node-vk-bot-api/node-vk-bot-api/commit/dd8f1c640764ebd41f1e55e1455bf5508f13cfec