使用 nTwitter 使用 node.js 回复推文

Posted

技术标签:

【中文标题】使用 nTwitter 使用 node.js 回复推文【英文标题】:Using nTwitter to reply to a Tweet with node.js 【发布时间】:2014-05-04 18:54:39 【问题描述】:

我使用node.jsnTwitter 创建了一个非常简单的推特机器人。

它搜索“某个单词”并用随机引用回复用户。我已经设法做对了所有事情。代码完美运行和流式传输。

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

它所做的只是向发推文“某些词”的人发推文。如下图所示,虽然它回复了用户,但这不是对话,用户没有删除他的推文。

这是我正在谈论的图片:

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

请帮帮我。提前致谢。

【问题讨论】:

这里的问题是,从技术上讲,您在您的推文中提到了“用户”,而不是回复他的推文。 您必须在您的请求中添加一个参数in_reply_to_status_id(这是您正在回复的用户推文的状态ID。参考:dev.twitter.com/docs/api/1.1/post/statuses/update 您不需要新方法。在您当前的updateStatus 函数中,在第二个参数中,包含您将从tweet 对象获得的in_reply_to_status_id 谢谢 Akash 我试过了,但它做同样的事情。也许我没有正确使用代码。能否请您指导我查看代码的使用示例? 谢谢哥们,我想通了。 :) 【参考方案1】:

您必须在您的请求中添加一个参数 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();

【讨论】:

感谢 Akash 的帮助。【参考方案2】:

您必须添加参数 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();

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

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

【讨论】:

以上是关于使用 nTwitter 使用 node.js 回复推文的主要内容,如果未能解决你的问题,请参考以下文章

WebSocket 使用 node.js 回复每个客户端“onConnect”

Node.js 或使用 mongodb 服务器 [关闭]

Node.js Mongoose 使用 bcrypt 登录

在 Node.js 中使用 axios 发布表单数据

提交联系回复到电子邮件

发送到电子邮件的联系回复