Skip to content

Instantly share code, notes, and snippets.

@richie3366
Created June 21, 2015 12:24
Show Gist options
  • Save richie3366/6df9db927b810d947f9a to your computer and use it in GitHub Desktop.
Save richie3366/6df9db927b810d947f9a to your computer and use it in GitHub Desktop.
Bot Twitter d'auto-fav de tweets sur base de mots clés
var twitter = require('twitter'); // npm install twitter
var tokens = require('./tokens.json'); // Tokens stockés en JSON, cf. lignes 7 à 10 pour la structure de l'objet
var MAIN_ACCOUNT = "NomDuCompte"; // Nom du compte de votre bot
// Configuration/construction de l'interface client
var client = new twitter({ // J'aurais pu juste mettre "var client = new twitter(tokens);"
consumer_key: tokens.consumer_key, // Clé API de l'app
consumer_secret: tokens.consumer_secret, // Clé secrete app
access_token_key: tokens.access_token_key, // Clé OAuth associée au compte du bot via l'app
access_token_secret: tokens.access_token_secret // Clé secrète OAuth associée au compte du bot via l'app
}); // Pour créer votre app : apps.twitter.com
// Pour générer les tokens liés au compte du bot : http://tiny.cc/pinauth
// Pour plus d'infos sur le paramètre track : http://tiny.cc/trackparam
client.stream('statuses/filter', {'track': '#PremierHash,#OuSecondHash'}, function(stream) { // mots &/ou #HT (séparés par ",")
stream.on('data', function(data) { // Quand on a des données qui arrivent (i.e. un tweet)
// On évite de prendre les RTs, les contenus n'étant pas des tweets ou nos propres tweets :
if(!data.text || data.retweeted_status || !data.user || data.user.screen_name === MAIN_ACCOUNT)
return;
console.log('tweet <-', data.user.screen_name, data.text); // Un petit log ne fait jamais de mal
var postData = { // Objet des données post qu'on va envoyer à l'API de Twitter pour répondre au tweet...
id: data.id_str // l'ID du tweet à RT
}; // (notez que le fav est soumis à des limitations, l'automatisation est quelque chose à modérer un maximum :p)
client.post('favorites/create', postData, function(error, tweet, response){
if(error) // Si on a une erreur, on la log...
console.log('error when faving tweet', error);
else // Sinon bah, on log quand même ce qu'on a fav :p
console.log('faved ->', tweet.user.screen_name, tweet.text);
});
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment