UNPKG

2.03 kBJavaScriptView Raw
1//
2// RTD2 - Twitter bot that tweets about the most popular github.com news
3// Also makes new friends and prunes its followings.
4//
5var Bot = require('./bot')
6 , config1 = require('../config1');
7
8var bot = new Bot(config1);
9
10console.log('RTD2: Running.');
11
12//get date string for today's date (e.g. '2011-01-01')
13function datestring () {
14 var d = new Date(Date.now() - 5*60*60*1000); //est timezone
15 return d.getUTCFullYear() + '-'
16 + (d.getUTCMonth() + 1) + '-'
17 + d.getDate();
18};
19
20setInterval(function() {
21 bot.twit.get('followers/ids', function(err, reply) {
22 if(err) return handleError(err)
23 console.log('\n# followers:' + reply.ids.length.toString());
24 });
25 var rand = Math.random();
26
27 if(rand <= 0.10) { // tweet popular github tweet
28 var params = {
29 q: 'github.com/'
30 , since: datestring()
31 , result_type: 'mixed'
32 };
33 bot.twit.get('search', params, function (err, reply) {
34 if(err) return handleError(err);
35
36 var max = 0, popular;
37
38 var tweets = reply.results
39 , i = tweets.length;
40
41 while(i--) {
42 var tweet = tweets[i]
43 , popularity = tweet.metadata.recent_retweets;
44
45 if(popularity > max) {
46 max = popularity;
47 popular = tweet.text;
48 }
49 }
50
51 bot.tweet(popular, function (err, reply) {
52 if(err) return handleError(err);
53
54 console.log('\nTweet: ' + (reply ? reply.text : reply));
55 })
56 });
57 } else if(rand <= 0.55) { // make a friend
58 bot.mingle(function(err, reply) {
59 if(err) return handleError(err);
60
61 var name = reply.screen_name;
62 console.log('\nMingle: followed @' + name);
63 });
64 } else { // prune a friend
65 bot.prune(function(err, reply) {
66 if(err) return handleError(err);
67
68 var name = reply.screen_name
69 console.log('\nPrune: unfollowed @'+ name);
70 });
71 }
72}, 40000);
73
74function handleError(err) {
75 console.error('response status:', err.statusCode);
76 console.error('data:', err.data);
77}