Twitterbot使用节点和javascript不断循环

时间:2016-11-30 22:02:37

标签: javascript node.js twitter

这是我第一次在这里发帖,如果没有正确询问,请提前道歉。

我正在开展一个项目,我有一个Twitter机器人,每当某个帐户发推文时都会发推文。

我可以在设置测试帐户时使用它,但当我使用真实帐户(一个受欢迎的帐户)时,我的机器人将继续发送推文。

我的代码基于Daniel Shiffman在YouTube上的推文机器人教程:

...好的作为我通过另一个论坛发现的编辑,原因是我也在接受推特的任何转发/爱情等我希望我的机器人做出反应......按照Twitter API文档:< / p>

遵循 逗号分隔的用户ID列表,指示应在流上传递推文的用户。不支持以下受保护用户。对于指定的每个用户,该流将包含: 用户创建的推文。 由用户转发的推文。 回复用户创建的任何推文。 转发用户创建的任何推文。 手动回复,无需按回复按钮即可创建(例如“@twitterapi我同意”)。

所以我现在需要做的是实现一些逻辑,这样我的机器人只会对我关注的帐户的实际推文做出反应,而不是对它的任何转发/收藏等做出反应..

我在下面添加了if / else语句以及原始代码:

    console. log('The streambot is starting');
      var Twit = require('twit'); 
      var config = require('./config'); 
      var T = new Twit(config);


      var stream = T.stream('statuses/filter', { follow: '(//TWITTERID OF ACCOUNT GOES HERE' });  
      stream.on('tweet',thisTweet); 


/*
if ('statuses/filter' !=  userID){
    console.log("error")
} else {
    thisTweet;
}  */ 

//这个IF是尝试限制我的机器人对我正在关注的帐户的推文的反应

function thisTweet(){

            var randomWords= "//a list of random words"

            var splitrandom = randomWords.split(",");

          //picks a random word from list
          var oneWord = splitrandom [Math.floor(Math.random() * splitrandom .length)];

        tweetIt(oneWord);

         }

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

            }
          }

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:0)

我得到了Twitter开发者的一些帮助:

这应该可以解决问题:

// define the ID of the user we are interested in
var userID = 'some number';

// open a stream following events from that user ID
var stream = T.stream('statuses/filter', { follow: ( userID ) });

    stream.on('tweet', function (tweet) {
        // compare the user ID inside the Tweet object we passed in
        // to check it matches
        if (tweet.user.id == userID) {
            console.log("this was sent by the user we want to track")
            // now do something else
        } else {
            console.log(tweet.user.id + " - " + tweet.user.screen_name)
            // so we can ignore it
        }
    });