public
Last active — forked from maxogden/index.js

twitter bot for @sandyaid retweets

  • Download Gist
index.js
JavaScript
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
var crypto = require('crypto')
var request = require('request')
var url = require('url')
var irc = require('./IRC/lib/irc') // https://github.com/gf3/IRC-js
var ntwitter = require('ntwitter')
var twitter = require('twitter')
var qs = require('querystring')
 
// separate accounts to post and search because twitter was sending me 500s
// when I tried to use the same oauth creds for both twitter() and ntwitter()
 
var postOauth = {
consumer_key: '',
consumer_secret: '',
access_token_key: '',
access_token_secret: ''
}
 
var searchOauth = {
consumer_key: '',
consumer_secret: '',
access_token_key: '',
access_token_secret: ''
}
 
var botName = "sandybot"
var botChannel = "#sandyaid"
 
var bot = new irc({ server: 'irc.freenode.net'});
bot.connect(function () {
bot.nick(botName)
bot.join(botChannel)
})
 
bot.addListener('privmsg', function(msg) {
// { person: { nick: 'mbalho', user: '~max'},
// command: 'PRIVMSG',
// params: [ '#sandyaid', 'sandybot: test' ] }
if (msg.params[0].indexOf(botChannel) === -1) return
if (msg.params[1].indexOf(botName + ':') !== 0) return
var tweetID = msg.params[1]
tweetID = tweetID.replace(botName + ': ', '')
tweetID = tweetID.split(' ')[0]
bot.privmsg(botChannel, 'tweeting ' + tweetID + '...' )
twitter.retweetStatus(tweetID, function(data) {
console.log('retweeted', tweetID)
})
})
 
var twitter = new twitter(postOauth)
var tweets = new ntwitter(searchOauth)
 
function startStreaming() {
tweets.stream('statuses/filter', { track: 'sandyaid, sandyvolunteer' }, function(stream) {
stream.on('data', function(tweet) {
if (tweet.text.match(/^RT/)) return
bot.privmsg('#sandyaid', 'Tweet ' + tweet.id_str + " - @" + tweet.user.screen_name + ': ' + tweet.text)
});
console.log("listening for tweets...");
stream.on('end', startStreaming)
});
}
 
startStreaming()
tweet.txt
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 113 114 115
{ text: 'RT @HurricaneHackrs: Those seeking non-emergency assistance from community volunteers should tweet with hash-tag #SandyAid. We will aggr ...',
contributors: null,
in_reply_to_status_id_str: null,
in_reply_to_user_id_str: null,
geo: null,
retweet_count: 19,
source: 'web',
retweeted: false,
entities: { user_mentions: [ [Object] ], hashtags: [ [Object] ], urls: [] },
in_reply_to_user_id: null,
in_reply_to_status_id: null,
truncated: false,
id_str: '263114448431095808',
place: null,
coordinates: null,
created_at: 'Tue Oct 30 03:05:47 +0000 2012',
retweeted_status:
{ text: 'Those seeking non-emergency assistance from community volunteers should tweet with hash-tag #SandyAid. We will aggregate requests. #Sandy',
contributors: null,
in_reply_to_status_id_str: null,
in_reply_to_user_id_str: null,
geo: null,
retweet_count: 19,
source: 'web',
retweeted: false,
entities: { user_mentions: [], hashtags: [Object], urls: [] },
in_reply_to_user_id: null,
in_reply_to_status_id: null,
truncated: false,
id_str: '263107473068683266',
place: null,
coordinates: null,
created_at: 'Tue Oct 30 02:38:04 +0000 2012',
user:
{ notifications: null,
profile_background_image_url: 'http://a0.twimg.com/profile_background_images/697475042/37494876a19d1f50fbc907fdd51e938d.jpeg',
friends_count: 0,
is_translator: false,
default_profile: false,
profile_background_image_url_https: 'https://si0.twimg.com/profile_background_images/697475042/37494876a19d1f50fbc907fdd51e938d.jpeg',
profile_link_color: '0084B4',
followers_count: 26,
location: 'East Coast, USA',
contributors_enabled: false,
time_zone: null,
profile_background_color: 'C0DEED',
description: 'Gathering information and organizing tech+social projects related to Hurricane Sandy',
profile_background_tile: true,
profile_image_url_https: 'https://si0.twimg.com/profile_images/2782710682/f7b93879d4b28215ede518c4cc990aa9_normal.png',
screen_name: 'HurricaneHackrs',
default_profile_image: false,
follow_request_sent: null,
profile_sidebar_fill_color: 'DDEEF6',
verified: false,
favourites_count: 0,
lang: 'en',
profile_sidebar_border_color: 'fff',
protected: false,
id_str: '913676251',
created_at: 'Tue Oct 30 01:55:10 +0000 2012',
name: 'Hurricane Hackers',
statuses_count: 2,
profile_use_background_image: true,
url: 'http://bit.ly/SoCslP',
profile_image_url: 'http://a0.twimg.com/profile_images/2782710682/f7b93879d4b28215ede518c4cc990aa9_normal.png',
id: 913676251,
listed_count: 0,
following: null,
geo_enabled: false,
utc_offset: null,
profile_text_color: '333333' },
id: 263107473068683260,
in_reply_to_screen_name: null,
favorited: false },
user:
{ notifications: null,
profile_background_image_url: 'http://a0.twimg.com/images/themes/theme1/bg.png',
friends_count: 81,
is_translator: false,
default_profile: true,
profile_background_image_url_https: 'https://si0.twimg.com/images/themes/theme1/bg.png',
profile_link_color: '0084B4',
followers_count: 43,
location: '',
contributors_enabled: false,
time_zone: 'Nuku\'alofa',
profile_background_color: 'C0DEED',
description: 'One of Many',
profile_background_tile: false,
profile_image_url_https: 'https://si0.twimg.com/profile_images/2336205875/temp_normal.jpg',
screen_name: 'CheerfulKiwi',
default_profile_image: false,
follow_request_sent: null,
profile_sidebar_fill_color: 'DDEEF6',
verified: false,
favourites_count: 13,
lang: 'en',
profile_sidebar_border_color: 'C0DEED',
protected: false,
id_str: '616978859',
created_at: 'Sun Jun 24 10:06:07 +0000 2012',
name: 'Under Seal',
statuses_count: 1733,
profile_use_background_image: true,
url: null,
profile_image_url: 'http://a0.twimg.com/profile_images/2336205875/temp_normal.jpg',
id: 616978859,
listed_count: 0,
following: null,
geo_enabled: false,
utc_offset: 46800,
profile_text_color: '333333' },
id: 263114448431095800,
in_reply_to_screen_name: null,
favorited: false }

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.