Задать вопрос
@Dima_Demichev

Как написать бота vk на Node.js?

Здравствуйте, столкнулся с несколькими проблемами пока писал бота. Бот пишется не для сообщества, а для личной странички.

1. Неверная кодировка, я так понял, что нужна кодировка utf-8. Т.к. на Английском ответ отправляется.
2. setInterval стоит 2 секунды, поэтому бот отправляет сразу 2 сообщения. Т.к. за секунд 10 он отправляет только 1. Как это можно исправить?
Код:
var https = require('https');
    function request(method, parameters){
    https.get("https://api.vk.com/method/"+method+"?"+parameters, (request) => {
      request.on('data', (json) => {
        data = JSON.parse(json);
        chat[0] = data.response.items[0].id;
        chat[1] = data.response.items[0].body;
        chat[2] = data.response.items[0].user_id;

      });
    });
    }

    setInterval(function(){
    request("messages.getHistory", "chat_id="+chat_id+"&count=1&access_token="+access_token+"&v=5.52");
    if (chat[1] == "Привет"){
        console.log(data);
        require('https').get("https://api.vk.com/method/messages.send?chat_id="+chat_id+"&message=Здравствуй&forward_messages="+chat[0]+"&access_token="+access_token+"&v=5.68");
    }
    }, 2000);

Как это можно исправить? Как вообще должен писаться бот для vk api, как это делать правильно?
  • Вопрос задан
  • 3705 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
megafax
@megafax
web-программист
1. Да, нужно в UTF-8
2. У Вас request - асинхронный - переведите его через async/await либо заверните в промис, чтобы можно было получать от него данные и соответствующим образом на них реагировать. Делать переменную chat глобальной (насколько понятно из кода) - плохая затея.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы