uris77
3/6/2015 - 3:21 AM

Twitter bot

Twitter bot

var Twit = require('twit');
var config  = require('./config');

var T = new Twit(config);

var stream = T.stream('statuses/filter', {track: '#ngconf'});

stream.on('tweet', function(tweet) {
  console.log('Incoming Tweet');
  if(!tweet.in_reply_to_user_id && tweet.user.screen_name !== 'freethejazz') {
    if(!tweet.favorited && isLucky(1/2)) {
      scheduleFuture(favoriteTweet, tweet);
      if(!tweet.retweeted && isLucky(1/2)) {
        scheduleFuture(retweetTweet, tweet);
      }
    }

    if(!tweet.user.following && isLucky(1/8)) {
      scheduleFuture(followUser, tweet.user);
    }
  }
});

var scheduleFuture = function(fn, arg) {
  setTimeout(fn, randomMsBetween(20000, 90000), arg);
};

var randomMsBetween = function(low, high) {
  return Math.floor(Math.random() * high - low) + low;
};


var isLucky = function(chances) {
  return (Math.random() < chances);
}

var favoriteTweet = function(tweet) {
  console.log('Favoriting tweet:' + tweet.text);
  T.post('favorites/create', { id: tweet.id_str }, cb);
};

var retweetTweet = function(tweet) {
  console.log('Retweeting tweet:' + tweet.text);
  T.post('statuses/retweet/:id', { id: tweet.id_str }, cb);
};

var followUser = function(user) {
  console.log('Following user: ' + user.screen_name);
  T.post('friendships/create', {screen_name: user.screen_name, follow: true}, cb);
}


var cb = function(err) {
  if(err) {
    console.log(err);
  }
}