Ce script twitter peut actuellement tweeter l’utilisateur sélectionné une fois qu’il tweet, mais au lieu de répondre sous le tweet, il le tweete comme un nouveau tweet autonome. Comment puis-je le faire répondre au lieu de créer un nouveau tweet? J’utilise l’API Twit: https://github.com/ttezel/twit
Voici ce que j’ai
console.log('The bot is starting'); var Twit = require('twit'); var config = require('./config'); var T = new Twit(config); //Setting up a user stream var stream = T.stream('user'); stream.on('tweet', tweetEvent); function tweetEvent(eventMsg) { var replyto = eventMsg.user.screen_name; var text = eventMsg.text; var from = eventMsg.user.screen_name; console.log(replyto + ' '+ from); if (replyto =='other user's handle') { var newtweet = '@' + from + ' Hello!'; tweetIt(newtweet); } } function tweetIt(txt) { var tweet = { status: txt } T.post('statuses/update', tweet, tweeted); function tweeted(err, data, response) { if (err) { console.log("Something went wrong!"); } else { console.log("It worked!"); } } }
Pour qu’une réponse apparaisse dans la conversation sur Twitter via l’API Twitter, vous avez besoin des éléments suivants:
// the status update or tweet ID in which we will reply var nameID = tweet.id_str;
Le paramètre in_reply_to_status_id
est également nécessaire dans l’état du tweet
. Voir les mises à jour de votre code ci-dessous et il devrait maintenant conserver la conversation:
console.log('The bot is starting'); var Twit = require('twit'); var config = require('./config'); var T = new Twit(config); //Setting up a user stream var stream = T.stream('user'); stream.on('tweet', tweetEvent); function tweetEvent(tweet) { var reply_to = tweet.in_reply_to_screen_name; var text = tweet.text; var from = tweet.user.screen_name; var nameID = tweet.id_str; // params just to see what is going on with the tweets var params = {reply_to, text, from, nameID}; console.log(params); if (reply_to === 'YOUR_USERNAME') { var new_tweet = '@' + from + ' Hello!'; var tweet = { status: new_tweet, in_reply_to_status_id: nameID } T.post('statuses/update', tweet, tweeted); function tweeted(err, data, response) { if (err) { console.log("Something went wrong!"); } else { console.log("It worked!"); } } } }