我使用node.js
创建了一个非常简单的Twitter机器人。 nTwitter
。
它搜索某个单词' &安培;用随机引用回复用户。我已经成功地完成了一切。代码运行&完美地流。
但这是一个巨大的缺点。当机器人回复推文时,在Twitter上它并没有将其显示为对话。
它所做的只是发推特推文“某个词”的人。如下面的快照所示,虽然它回复给用户,但它并不是一个对话&用户没有删除他的推文。
这是我正在谈论的图片:
这是我的代码。令牌使用auth.js
处理var ntwitter = require('ntwitter');
var auth = require('../auth');
var bot = new ntwitter(auth);
var callback = function handleError(error) {
if (error) {
console.error('response status:', error.statusCode);
console.error('data:', error.data);
}
};
function startStreaming() {
bot.stream('statuses/filter', { track: 'certain word' }, function(stream) {
console.log('Listening for Tweets...');
stream.on('data', function(tweet) {
if (tweet.text.match(/certain\sword/)) {
bot.updateStatus('@' + tweet.user.screen_name + ' True that' ,
tweet.user.screen_name , callback);
}
});
});
}
startStreaming();
我想问题出在bot.updateStatus()
。
请帮帮我。提前谢谢。
答案 0 :(得分:3)
您必须在请求中添加一个参数in_reply_to_status_id(这是您要回复的用户推文的状态ID。参考:POST statuses/update
这是一个例子。
function startStreaming() {
bot.stream('statuses/filter', { track: 'certain word' }, function(stream) {
console.log('Listening for Tweets...');
stream.on('data', function(tweet) {
if (tweet.text.match('certain word')) {
bot.updateStatus('@' + tweet.user.screen_name + ' True that' ,
{in_reply_to_status_id: tweet.id_str}, callback);
}
});
});
}
startStreaming();
答案 1 :(得分:0)
您必须添加参数 in_reply_to_status_id
才能开始与 Twitter 用户的对话。
function startStreaming() {
bot.stream('statuses/filter', { track: 'certain word' }, function(stream) {
console.log('Listening for Tweets...');
stream.on('data', function(tweet) {
if (tweet.text.match('certain word')) {
bot.updateStatus('@' + tweet.user.screen_name + ' True that' ,
{in_reply_to_status_id: tweet.id_str}, callback);
}
});
}
startStreaming();
请注意,如果您不在 in_reply_to_status_id
中提及您要回复的 username
,tweet_text
将不起作用。
此外,您不能使用相同的 tweet_text
,否则会被视为垃圾邮件。