2014-03-26 74 views
3

我使用node.js & nTwitter創建了一個非常簡單的推特機器人。使用nTwitter用node.js回覆Tweet鳴叫

它搜索「某個單詞」&用隨機引號回覆用戶。我設法做一切正確。該代碼完美地運行&流。

但是有一個巨大的缺點。當機器人回覆推文時,在Twitter上它不會將其顯示爲對話。

它所發揮的只是推送推特'某個單詞'的人。如下圖所示,儘管它回覆了用戶,但這不是一次對話&用戶還沒有刪除他的推文。

這裏就是我談論的PIC:

enter image description here

這裏是我的代碼。令牌處理與auth.js

var ntwitter = require('ntwitter'); 
var auth = require('../auth'); 

var bot = new ntwitter(auth); 


var callback = function handleError(error) { 
    if (error) { 
    console.error('response status:', error.statusCode); 
    console.error('data:', error.data); 
    } 
}; 

function startStreaming() { 

    bot.stream('statuses/filter', { track: 'certain word' }, function(stream) { 

    console.log('Listening for Tweets...'); 

    stream.on('data', function(tweet) { 

     if (tweet.text.match(/certain\sword/)) { 

      bot.updateStatus('@' + tweet.user.screen_name + ' True that' , 
      tweet.user.screen_name , callback); 

     } 
     }); 

    }); 
} 


startStreaming(); 

我想問題是與bot.updateStatus()

請幫我一把。提前致謝。 。

+0

這裏的問題是。從技術上講,你在提及你的用戶時並沒有回覆他的推文 –

+0

你必須在你的請求中添加一個參數'in_reply_to_status_id'(這是你回覆的用戶推文的狀態ID 。 ref:https://dev.twitter.com/doc s/api/1.1/post/statuses/update –

+0

你不需要一個新的方法。在你當前的'updateStatus'函數中,在第二個參數中,包含你將從'tweet'對象獲得的'in_reply_to_status_id'。 –

回答

3

你將不得不參數in_reply_to_status_id添加到您的要求(這是你在回答用戶的鳴叫的狀態ID編號:POST statuses/update

下面是一個例子

function startStreaming() { 
    bot.stream('statuses/filter', { track: 'certain word' }, function(stream) { 
     console.log('Listening for Tweets...'); 
     stream.on('data', function(tweet) { 
      if (tweet.text.match('certain word')) { 
       bot.updateStatus('@' + tweet.user.screen_name + ' True that' , 
        {in_reply_to_status_id: tweet.id_str}, callback); 
      } 
     }); 
    }); 
} 

startStreaming(); 
+0

感謝阿卡什的幫助。 – user3463831