Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用nTwitter通过node.js回复Tweet_Javascript_Node.js_Twitter_Bots_Ntwitter - Fatal编程技术网

Javascript 使用nTwitter通过node.js回复Tweet

Javascript 使用nTwitter通过node.js回复Tweet,javascript,node.js,twitter,bots,ntwitter,Javascript,Node.js,Twitter,Bots,Ntwitter,我使用node.js&nTwitter创建了一个非常简单的twitter机器人 它搜索“某个单词”&用随机的引号回复用户。我设法把一切都做好了。代码可以完美地运行和流式处理 但是有一个巨大的缺点。当机器人回复tweet时,它不会在Twitter上显示为对话 它所做的只是给发“特定单词”的人发推特。如下面的快照所示,虽然它回复了用户,但这不是一次对话&用户没有删除他的tweet 下面是我正在谈论的图片: 这是我的密码。令牌由auth.js处理 var ntwitter = require('nt

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

它搜索“某个单词”&用随机的引号回复用户。我设法把一切都做好了。代码可以完美地运行和流式处理

但是有一个巨大的缺点。当机器人回复tweet时,它不会在Twitter上显示为对话

它所做的只是给发“特定单词”的人发推特。如下面的快照所示,虽然它回复了用户,但这不是一次对话&用户没有删除他的tweet

下面是我正在谈论的图片:

这是我的密码。令牌由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()上


请帮帮我。提前感谢。

您必须在请求的“回复”至“状态”id中添加一个参数(即您正在回复的用户推文的状态id)。参考:

这里有一个例子

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

为了开始与Twitter用户的对话,您必须在“回复”到“状态”id中添加一个参数

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();
请注意,如果您没有在
tweet\u文本中提及您正在回复的
用户名,那么在答复状态\u id中的
将不起作用。
此外,您不能使用相同的
tweet\u文本
,否则将被视为垃圾邮件


来源:

这里的问题是,从技术上讲,你在你的推文中提到了那个“用户”,而没有回复他的推文。你必须在你的请求中添加一个参数
。\u reply\u to\u status\u id
(这是您正在回复的用户tweet的状态id。参考:您不需要新方法。在您当前的
updateStatus
函数中,在第二个参数中,包括从
tweet
对象获得的
in_reply_to_status_id
。谢谢Akash,我尝试了这一点,但它做了同样的事情。也许我没有使用正确的代码。你能告诉我一个正在使用的代码示例吗?谢谢,老兄,我找到了。:)谢谢阿卡什的帮助。