Скрипт ответа узла для твиттера на самом деле не отвечает

Этот твит-скрипт в настоящее время может твитить выбранного пользователя, как только он твитит, но вместо того, чтобы фактически отвечать под твитом, он твитит его как отдельный новый твит. Как я могу заставить его отвечать, а не создавать новый твит? Я использую Twit API: https://github.com/ttezel/twit

Вот что у меня есть:

    console.log('The bot is starting');

var Twit = require('twit');

var config = require('./config');
var T = new Twit(config);

//Setting up a user stream
var stream = T.stream('user');

stream.on('tweet', tweetEvent);

function tweetEvent(eventMsg) {

   var replyto = eventMsg.user.screen_name;
   var text = eventMsg.text;
   var from = eventMsg.user.screen_name;

   console.log(replyto + ' '+ from);

   if (replyto =='other user's handle') {
    var newtweet = '@' + from + ' Hello!';
    tweetIt(newtweet);
   }

}

function tweetIt(txt) {

    var tweet = {
     status: txt
     }

    T.post('statuses/update', tweet, tweeted);

    function tweeted(err, data, response) {
      if (err) {
        console.log("Something went wrong!");
      } else {
        console.log("It worked!");
      }
    }
}

person MC_Glide    schedule 18.08.2016    source источник


Ответы (1)


Чтобы ответ отображался в переписке твитов с использованием Twitter API, вам необходимо следующее:

// the status update or tweet ID in which we will reply
var nameID  = tweet.id_str;

Также нужен параметр in_reply_to_status_id в статусе tweet. См. обновления вашего кода ниже, и теперь он должен сохранить диалог:

console.log('The bot is starting');

var Twit = require('twit');

var config = require('./config');
var T = new Twit(config);

//Setting up a user stream
var stream = T.stream('user');

stream.on('tweet', tweetEvent);

function tweetEvent(tweet) {
    var reply_to = tweet.in_reply_to_screen_name;
    var text       = tweet.text;
    var from       = tweet.user.screen_name;
    var nameID     = tweet.id_str;
    // params just to see what is going on with the tweets
    var params     = {reply_to, text, from, nameID};
    console.log(params);

    if (reply_to === 'YOUR_USERNAME') {
        var new_tweet = '@' + from + ' Hello!';
        var tweet = {
            status: new_tweet,
            in_reply_to_status_id: nameID
        }

        T.post('statuses/update', tweet, tweeted);

        function tweeted(err, data, response) {
            if (err) {
                console.log("Something went wrong!");
            } else {
                console.log("It worked!");
            }
        }
    }
}
person mmryspace    schedule 18.08.2016
comment
Бот запускается с новым кодом, но когда другой пользователь твитит и бот должен ответить, я получаю сообщение об ошибке, что nameID не определен? - person MC_Glide; 19.08.2016