1
1
/**
2
2
* DEPENDENCIES
3
3
*/
4
- " use strict" // c9 use
5
- var twit = require ( 'twit' )
4
+ ' use strict' // c9 use
5
+ var Twit = require ( 'twit' )
6
6
var ura = require ( 'unique-random-array' )
7
7
var config = require ( './config' )
8
8
var sentiment = require ( './helpers/sentiment' )
9
9
var db = require ( './helpers/db' )
10
10
var strings = require ( './helpers/strings' )
11
11
12
- var Twitter = new twit ( config )
12
+ var Twitter = new Twit ( config )
13
13
14
14
// Frequency in minutes
15
15
var retweetFrequency = 30
@@ -23,34 +23,30 @@ console.log('Welcome to #100DaysOfCode')
23
23
24
24
// RETWEET
25
25
// find latest tweets according to #100DaysOfCode
26
- var retweet = function ( ) {
26
+ var retweet = function ( ) {
27
27
var params = {
28
28
q : queryString ,
29
29
result_type : 'recent' ,
30
30
lang : 'en'
31
31
}
32
32
// for more parameters options, see: https://dev.twitter.com/rest/reference/get/search/tweets
33
- Twitter . get ( 'search/tweets' , params , function ( err , data ) {
33
+ Twitter . get ( 'search/tweets' , params , function ( err , data ) {
34
34
// if no errors
35
35
if ( ! err ) {
36
36
// grab ID of tweet to retweet
37
37
var retweetId = data . statuses [ 0 ] . id_str
38
38
// Tell Twitter to retweet
39
39
Twitter . post ( 'statuses/retweet/:id' , {
40
40
id : retweetId
41
- } , function ( err , response ) {
41
+ } , function ( err , response ) {
42
42
// if error while retweet
43
43
if ( err ) {
44
44
console . log ( 'While Retweet. ERROR!...Maybe Duplicate Tweet' )
45
- }
46
- else {
45
+ } else {
47
46
console . log ( 'Retweet. SUCCESS!' )
48
47
}
49
-
50
48
} )
51
- }
52
- // if unable to search a tweet
53
- else {
49
+ } else { // if unable to search a tweet
54
50
console . log ( 'Cannot Search Tweet. ERROR!' )
55
51
}
56
52
} )
@@ -62,7 +58,7 @@ setInterval(retweet, 1000 * 60 * retweetFrequency)
62
58
63
59
// FAVORITE ==============================
64
60
// find a random tweet using querySring and 'favorite' it
65
- var favoriteTweet = function ( ) {
61
+ var favoriteTweet = function ( ) {
66
62
var params = {
67
63
q : queryString ,
68
64
result_type : 'recent' ,
@@ -71,22 +67,21 @@ var favoriteTweet = function() {
71
67
// for more parameters, see: https://dev.twitter.com/rest/reference
72
68
73
69
// find a tweet
74
- Twitter . get ( 'search/tweets' , params , function ( err , data ) {
70
+ Twitter . get ( 'search/tweets' , params , function ( err , data ) {
75
71
// find tweets randomly
76
72
var tweet = data . statuses
77
- var randomTweet = ranDom ( tweet ) //pick a random tweet
73
+ var randomTweet = ranDom ( tweet ) // pick a random tweet
78
74
79
- //if random tweet is found
80
- if ( typeof randomTweet != 'undefined' ) {
75
+ // if random tweet is found
76
+ if ( typeof randomTweet !== 'undefined' ) {
81
77
// Tell Twitter to 'favorite' it
82
78
Twitter . post ( 'favorites/create' , {
83
79
id : randomTweet . id_str
84
- } , function ( err , response ) {
80
+ } , function ( err , response ) {
85
81
// if error while 'favorite'
86
82
if ( err ) {
87
83
console . log ( 'Cannot Favorite. ERROR!' )
88
- }
89
- else {
84
+ } else {
90
85
console . log ( 'Favorite Done. SUCCESS!' )
91
86
}
92
87
} )
@@ -107,7 +102,7 @@ var userStream = Twitter.stream('user')
107
102
userStream . on ( 'follow' , followed )
108
103
109
104
// ...trigger the callback
110
- function followed ( event ) {
105
+ function followed ( event ) {
111
106
console . log ( 'Follow Event now RUNNING' )
112
107
// get USER's twitter handler (screen name)
113
108
var name = event . source . name
@@ -117,15 +112,14 @@ function followed(event) {
117
112
}
118
113
119
114
// function definition to tweet back to USER who followed
120
- function tweetNow ( tweetTxt ) {
115
+ function tweetNow ( tweetTxt ) {
121
116
var tweet = {
122
117
status : tweetTxt
123
118
}
124
- Twitter . post ( 'statuses/update' , tweet , function ( err , data , response ) {
119
+ Twitter . post ( 'statuses/update' , tweet , function ( err , data , response ) {
125
120
if ( err ) {
126
- console . log ( "Cannot Reply to Follower. ERROR!" )
127
- }
128
- else {
121
+ console . log ( 'Cannot Reply to Follower. ERROR!' )
122
+ } else {
129
123
console . log ( 'Reply to follower. SUCCESS!' )
130
124
}
131
125
} )
@@ -137,14 +131,13 @@ const hashtagStream = Twitter.stream('statuses/filter', {
137
131
} )
138
132
139
133
// Function that checks if day 1 or day 100
140
- var checkIfFirstOrLastDay = function ( ) {
134
+ var checkIfFirstOrLastDay = function ( ) {
141
135
hashtagStream . on ( 'tweet' , ( tweet ) => {
142
136
if ( checkIfLastDay ( tweet ) ) {
143
137
console . log ( `Sending a congrats to @${ tweet . user . screen_name } ` )
144
138
tweetNow ( `WOOT! You did it @${ tweet . user . screen_name } ! Party Time!` )
145
- }
146
- else if ( checkIfFirstDay ( tweet ) ) {
147
- console . log ( 'Sending a congrats to @${tweet.user.screen_name}' )
139
+ } else if ( checkIfFirstDay ( tweet ) ) {
140
+ console . log ( `Sending a congrats to @${ tweet . user . screen_name } ` )
148
141
tweetNow ( `Congrats on your first day @${ tweet . user . screen_name } ! Keep it up!` )
149
142
}
150
143
} )
@@ -154,7 +147,7 @@ setImmediate(checkIfFirstOrLastDay, 1000 * 60 * firstOrLastDayFrequency)
154
147
155
148
// NOTE: String elements in firstDay & lastDay are case insensitive
156
149
157
- function checkIfFirstDay ( tweet ) {
150
+ function checkIfFirstDay ( tweet ) {
158
151
const firstDay = [ 'first day' , 'day one' , 'day 1/100' ]
159
152
const firstdayRegex = / \b d a y \s ? 0 ? 1 \b / i
160
153
console . log ( `Checking if first day` )
@@ -165,7 +158,7 @@ function checkIfFirstDay(tweet) {
165
158
}
166
159
}
167
160
168
- function checkIfLastDay ( tweet ) {
161
+ function checkIfLastDay ( tweet ) {
169
162
const lastDay = [ '#day100' , 'final day' , 'day 100' , 'one hundred' , '100/100' ]
170
163
const lastdayRegex = / \b d a y \s ? 1 0 0 \b / i
171
164
console . log ( `Checking if Last day` )
@@ -176,28 +169,26 @@ function checkIfLastDay(tweet) {
176
169
}
177
170
}
178
171
179
- function checkTweetForText ( tweetText , value ) {
172
+ function checkTweetForText ( tweetText , value ) {
180
173
return tweetText . toLowerCase ( ) . indexOf ( value ) > - 1 && tweetText . toLowerCase ( ) . indexOf ( '100daysofcode' ) > - 1
181
174
}
182
175
183
- function ranDom ( arr ) {
176
+ function ranDom ( arr ) {
184
177
var index = Math . floor ( Math . random ( ) * arr . length )
185
178
return arr [ index ]
186
179
}
187
180
188
181
// PROJECT OF THE DAY TWEET
189
- function tweetProjectOfTheDay ( ) {
190
-
182
+ function tweetProjectOfTheDay ( ) {
191
183
var projectOfTheDay = ura ( strings . projectOfTheDay )
192
184
193
185
var message = 'Todays #100DaysOfCode #301DaysOfCode #ProjectOfTheDay, ' + projectOfTheDay ( )
194
186
195
187
Twitter . post ( 'statuses/update' , {
196
188
status : message
197
- } , function ( err , data , response ) {
189
+ } , function ( err , data , response ) {
198
190
console . log ( 'POST PROJECT OF THE DAY!' )
199
191
} )
200
-
201
192
}
202
193
203
194
// // post random project of the day
@@ -210,42 +201,38 @@ const hashtagStream2 = Twitter.stream('statuses/filter', {
210
201
track : '#100DaysOfCode'
211
202
} )
212
203
213
- var sentimentBot = function ( ) {
204
+ var sentimentBot = function ( ) {
214
205
hashtagStream2 . on ( 'tweet' , ( tweet ) => {
215
206
console . log ( `Sentiment Bot Running` )
216
207
// Setup the http call
217
208
var httpCall = sentiment . init ( )
218
209
219
210
// Don't do anything if it's the bot tweet
220
- if ( tweet . user . screen_name == '_100DaysOfCode' ) return
221
-
222
- httpCall . send ( "txt=" + tweet . text ) . end ( function ( result ) {
211
+ if ( tweet . user . screen_name === '_100DaysOfCode' ) return
223
212
213
+ httpCall . send ( 'txt=' + tweet . text ) . end ( function ( result ) {
224
214
var sentim = result . body . result . sentiment
225
215
var confidence = parseFloat ( result . body . result . confidence )
226
216
227
217
// if sentiment is Negative and the confidence is above 75%
228
- if ( sentim == 'Negative' && confidence >= 75 ) {
229
-
218
+ if ( sentim === 'Negative' && confidence >= 75 ) {
230
219
// get a random quote
231
220
var phrase = sentiment . randomQuote ( )
232
- var screen_name = tweet . user . screen_name
221
+ var screenName = tweet . user . screen_name
233
222
234
223
// Check key isn't in db already, key being the screen_name
235
- db . get ( screen_name , function ( err , value ) {
236
-
237
- if ( typeof ( value ) !== 'undefined' ) {
238
- console . log ( 'ALREADY IN DB USER ' , screen_name )
239
- }
240
- else {
241
- // Put a user name and that they have been encouraged
242
- db . put ( screen_name , 'encourage' , function ( err ) {
224
+ db . get ( screenName , function ( err , value ) {
225
+ if ( typeof ( value ) !== 'undefined' ) {
226
+ console . log ( 'ALREADY IN DB USER ' , screenName )
227
+ } else {
228
+ // Put a user name and that they have been encouraged
229
+ db . put ( screenName , 'encourage' , function ( err ) {
243
230
if ( err ) return console . log ( 'Ooops!' , err ) // some kind of I/O error
244
231
245
- console . log ( 'LOGGED USER ' , screen_name )
232
+ console . log ( 'LOGGED USER ' , screenName )
246
233
247
234
// tweet a random encouragement phrase
248
- tweetNow ( '@' + screen_name + ' ' + phrase )
235
+ tweetNow ( '@' + screenName + ' ' + phrase )
249
236
} )
250
237
}
251
238
} )
@@ -256,10 +243,10 @@ var sentimentBot = function() {
256
243
257
244
sentimentBot ( )
258
245
259
- var refreshDB = function ( ) {
246
+ var refreshDB = function ( ) {
260
247
var fs = require ( 'fs-extra' )
261
248
262
- fs . remove ( './blacklistUsersDb' , function ( err ) {
249
+ fs . remove ( './blacklistUsersDb' , function ( err ) {
263
250
if ( err ) return console . error ( err )
264
251
265
252
console . log ( 'success!' )
0 commit comments