Skip to content

Instantly share code, notes, and snippets.

@richie3366
Created June 20, 2015 19:25
Show Gist options
  • Save richie3366/9476887684390ca1ea2e to your computer and use it in GitHub Desktop.
Save richie3366/9476887684390ca1ea2e to your computer and use it in GitHub Desktop.
Bot Twitter d'auto-RT très simple sous NodeJS
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 obtenir l'ID d'un user simplement : http://tiny.cc/findtid
client.stream('statuses/filter', {'follow': '1234567890'}, function(stream) { // ID(s) de(s) l'utilisateur(s) (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 les RTs sont soumis à la Tweet limit & qu'il est interdit de RT auto pour gêner un user !)
client.post('statuses/retweet/'+data.id_str, postData, function(error, tweet, response){
if(error) // Si on a une erreur, on la log...
console.log('error when sending tweet', error);
else // Sinon bah, on log quand même ce qu'on a envoyé :p
console.log('tweet ->', tweet.user.screen_name, tweet.text);
});
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment