-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
112 lines (89 loc) · 2.63 KB
/
app.js
File metadata and controls
112 lines (89 loc) · 2.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
var Bot = require('./bot');
var config = require('./config.js');
var util = require('util');
console.log('jstwitbot: Running.');
for(bot in config) {
console.log("Setting up " + config[bot].name);
var thisBot = new Bot(config[bot]);
// build weights array
var weights = new Array();
var weightCounter = 0;
for(action in config[bot].weights) {
weightCounter += config[bot].weights[action];
var tempAction = action;
weights.push({ "action" : action, "weight" : weightCounter });
}
var params = config[bot].params;
params.since = datestring();
// Bot's event loop
(function(thisBot, params) {
setInterval(function() {
var action = getAction();
performAction(thisBot, action, params);
}, config[bot].interval);
})(thisBot, params);
}
//get date string for today's date (e.g. '2011-01-01')
function datestring () {
var d = new Date(Date.now() - 8*60*60*1000); //MST
return d.getUTCFullYear() + '-'
+ (d.getUTCMonth() + 1) + '-'
+ d.getDate();
};
function getAction () {
var rand = Math.ceil(Math.random() * weightCounter);
var action = weights[0].action;
for(var i=0, tot=weights.length; i < tot; i++) {
if(rand <= weights[i].weight) {
action = weights[i].action;
return action;
}
}
};
function performAction (bot, key, params) {
var actions = {
'favorite': function(params) {
bot.favorite(params, function(err, reply) {
if(err) return handleError(err);
console.log(bot.name + ' favorited response: ' + reply.id);
});
},
'retweet': function(params) {
bot.retweet(params, function(err, reply) {
if(err) return handleError(err);
console.log(bot.name + ' retweeted response: ' + reply.id);
});
},
'mingle': function() {
bot.mingle(function(err, reply) {
if(err) return handleError(err);
var name = reply.screen_name;
console.log(bot.name + ' mingled: followed @' + name);
});
},
'searchFollow': function(params) {
bot.searchFollow(params, function(err, reply) {
if(err) return handleError(err);
console.log(bot.name + ' searchFollowed: followed @' + reply.screen_name);
});
},
'prune': function() {
bot.prune(function(err, reply) {
if(err) return handleError(err);
var name = reply.screen_name;
console.log(bot.name + ' pruned: unfollowed @'+ name);
});
},
'unknown': function() {
console.log("\nUnknown action");
}
};
if(actions[key])
actions[key](params);
else
actions.unknown();
}
function handleError(err) {
console.error('response status:', err.statusCode);
console.error('data:', err.data);
}