Skip to content

Instantly share code, notes, and snippets.

@richie3366
Last active August 27, 2017 17:37
Show Gist options
  • Save richie3366/50457da7fd380342e2f8 to your computer and use it in GitHub Desktop.
Save richie3366/50457da7fd380342e2f8 to your computer and use it in GitHub Desktop.
Bot Twitter 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
client.stream('user', {'with': 'user'}, function(stream) { // On ouvre un stream sur les tweets adressés au bot
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...
status: "Hello @"+data.user.screen_name, // Le contenu du tweet...
in_reply_to_status_id: data.id_str // le tweet auquel je réponds
}; // (notez qu'une réponse valide est une réponse qui mentionne l'auteur du tweet, sauf self-answer)
client.post('statuses/update', 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