negezor / vk-io

Modern VK API SDK for Node.js
https://npm.im/vk-io
MIT License
548 stars 85 forks source link

Не обрабатываются сообщения из групповых чатов #230

Closed AlexXanderGrib closed 4 years ago

AlexXanderGrib commented 4 years ago

What did you do?

Начал переводить старого бота на nodejs + vk-io. Был создан новый токен со всеми правами + использован longpoll дабы избежать конфликтов со старым callback api во время разработки.

Я взял код из документации и немного модифицировал, чтобы избежать проблем:

// index.js
const { vk, groupId } = require('./definition');

(async function main(){
  await vk.api.groups.setLongPollSettings({
    enabled: true,
    group_id: groupId,
    message_new: 1,
    message_typing_state: 0,
    api_version: "5.103"
  });

  vk.updates.hear('/start', async (context) => {
    await context.send('Hello!');
  });

  await vk.updates.startPolling();
})()
// definition.js
const mysql = require('mysql2/promise');
const { VK } = require('vk-io');

const token = "...";
const v = "5.103";

module.exports = {
  connection: mysql.createConnection({...}),

  vk: new VK({
    apiVersion: v,
    token
  }),
  groupId: 173756456
}

И решил проверить его базовую работоспособность на пользователях и в групповых чатах. Мои сообщения воспринимались и код на них реагировал. Потом я решил отправить сообщение в групповом чате

What did you expect to happen?

Сообщения из групповых чатов обработаются vk.updates.hear и бот отправит в ответ Hello!

What was the actual result?

Сообщения из групповых чатов полностью игнорируются, в том числе методом vk.updates.use

Additional Info

Проводился тест на первой беседе бота, где у него были права администратора

Versions

package version
vk-io 4.0.0
node 13.6.0
TypeScript Не используется
yarn or npm yarn 1.21.1
vk api 5.103
negezor commented 4 years ago

Потому что используется User Long Poll, а что бы изменить это поведение, нужно всего передать одну опцию:


const groupId = 173756456;

module.exports = {
  connection: mysql.createConnection({...}),

  vk: new VK({
    apiVersion: v,
    pollingGroupId: groupId,
    token
  }),
  groupId
}
AlexXanderGrib commented 4 years ago

Спасибо за помощь