这是我第一次在这里发帖,如果没有正确询问,请提前道歉。
我正在开展一个项目,我有一个Twitter机器人,每当某个帐户发推文时都会发推文。
我可以在设置测试帐户时使用它,但当我使用真实帐户(一个受欢迎的帐户)时,我的机器人将继续发送推文。
我的代码基于Daniel Shiffman在YouTube上的推文机器人教程:
...好的作为我通过另一个论坛发现的编辑,原因是我也在接受推特的任何转发/爱情等我希望我的机器人做出反应......按照Twitter API文档:< / p>
遵循 逗号分隔的用户ID列表,指示应在流上传递推文的用户。不支持以下受保护用户。对于指定的每个用户,该流将包含: 用户创建的推文。 由用户转发的推文。 回复用户创建的任何推文。 转发用户创建的任何推文。 手动回复,无需按回复按钮即可创建(例如“@twitterapi我同意”)。
所以我现在需要做的是实现一些逻辑,这样我的机器人只会对我关注的帐户的实际推文做出反应,而不是对它的任何转发/收藏等做出反应..
我在下面添加了if / else语句以及原始代码:
console. log('The streambot is starting');
var Twit = require('twit');
var config = require('./config');
var T = new Twit(config);
var stream = T.stream('statuses/filter', { follow: '(//TWITTERID OF ACCOUNT GOES HERE' });
stream.on('tweet',thisTweet);
/*
if ('statuses/filter' != userID){
console.log("error")
} else {
thisTweet;
} */
//这个IF是尝试限制我的机器人对我正在关注的帐户的推文的反应
function thisTweet(){
var randomWords= "//a list of random words"
var splitrandom = randomWords.split(",");
//picks a random word from list
var oneWord = splitrandom [Math.floor(Math.random() * splitrandom .length)];
tweetIt(oneWord);
}
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");
}
}
任何帮助都会很棒!
答案 0 :(得分:0)
我得到了Twitter开发者的一些帮助:
这应该可以解决问题:
// define the ID of the user we are interested in
var userID = 'some number';
// open a stream following events from that user ID
var stream = T.stream('statuses/filter', { follow: ( userID ) });
stream.on('tweet', function (tweet) {
// compare the user ID inside the Tweet object we passed in
// to check it matches
if (tweet.user.id == userID) {
console.log("this was sent by the user we want to track")
// now do something else
} else {
console.log(tweet.user.id + " - " + tweet.user.screen_name)
// so we can ignore it
}
});