Я новичок в JavaScript и использую Node.js и Twitter API, чтобы научиться программировать. Я также использую пакет Twit NPM. Я пытаюсь создать «игру», в которой нужно твитнуть определенную фразу, чтобы начать. У меня есть функция, в которой, если конкретная фраза не отправлена в твиттер учетной записи, учетная запись также отвечает, чтобы попробовать еще раз.
Встречается фраза или нет, эта функция срабатывает один раз. Однако что, если тот же пользователь снова попытается твитнуть фразу (соответствующую фразе или нет)? Как избежать дублирования ошибки статуса? Я не уверен, какой лучший подход здесь, поскольку он выходит за рамки моих знаний. Вот упрощенная версия кода, который возвращает ошибку повторяющегося статуса после того, как оба условия if
были выполнены одним и тем же пользователем, а затем он снова пытается отправить твит:
var Twit = require('twit');
var T = new Twit(config);
// Start a stream for listening for @mentions
var stream = T.stream('statuses/filter', { track: ['@someusername'] });
stream.on('tweet', somePhrase);
function somePhrase(tweet) {
var request = tweet.text;
var trigger = /(?:[^"']|^)(\bsome phrase\b)(?!["'])/ig;
var name = tweet.user.screen_name;
var nameID = tweet.id_str;
// check to see if the tweet does not meet the request trigger
if (request != trigger) {
var reply = '@' + name + "try again";
var params = { status: reply };
}
// check to see if the request matches the request trigger
if (request.match(trigger)) {
var question = "what do you want to know?";
var params = {
status: question + ' @' + name,
in_reply_to_status_id: nameID
};
}
T.post('statuses/update', params, function(err, data, response) {
if (err !== undefined) {
console.log(err);
} else {
console.log('Tweeted: ' + params.status);
}
})
};
Это код ошибки, который возвращает API:
{ [Error: Status is a duplicate.]
message: 'Status is a duplicate.',
code: 187,
allErrors: [ { code: 187, message: 'Status is a duplicate.' } ],
twitterReply: { errors: [ [Object] ] },
statusCode: 403 }