使用nTwitter使用node.js回复Tweet

时间:2014-03-26 11:39:31

标签: javascript node.js twitter bots ntwitter

我使用node.js创建了一个非常简单的Twitter机器人。 nTwitter

它搜索某个单词' &安培;用随机引用回复用户。我已经成功地完成了一切。代码运行&完美地流。

但这是一个巨大的缺点。当机器人回复推文时,在Twitter上它并没有将其显示为对话。

它所做的只是发推特推文“某个词”的人。如下面的快照所示,虽然它回复给用户,但它并不是一个对话&用户没有删除他的推文。

这是我正在谈论的图片:

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()

请帮帮我。提前谢谢。

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

您必须添加参数 in_reply_to_status_id 才能开始与 Twitter 用户的对话。

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();

请注意,如果您不在 in_reply_to_status_id 中提及您要回复的 usernametweet_text 将不起作用。 此外,您不能使用相同的 tweet_text,否则会被视为垃圾邮件。

来源:https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/post-statuses-update