Node.js中的Twitterbot

本周,许多人为失去两个心爱的偶像而感到悲痛,这些偶像在所有公开场合都似乎拥有全部。 进一步证明,没有人能免受绝望和不足的感觉。 我可以亲自参与斗争,并表示支持#depressionisreal活动,以表达自己的支持,我创建了第一个Twitterbot: @ UreNotAlone0608。 它的基本功能是搜索包含我在params中定义的关键字的推文,然后将其转发。
通过本教程和其他文章,我发现了设置机器人的灵感。 其中包括有关如何配置节点,秘密密钥以及以后如何部署到Heroku的说明。 基本上,该机器人使用一个名为twit的Node模块,该模块与Twitter API交互,从而为REST端点提供查询和转发功能。 以下代码定义了参数:
让retweet = function(){
让参数= {
问:“ katespade或anthonybourdain或抑郁症”,
result_type:'混合',
lang:'en'
}
对于关键字,我使用了“抑郁症”和两个引人注目的名称,并认为后者将继续在推文中提及,以引起人们对精神健康危机的更多关注。 result_type: 'mixed'将返回流行和最近的推文的组合。
每次机器人运行时,我都将查询限制为4条匹配的推文。 由于结果类型mixed ,有时我会收到一条错误message: 'You have already retweeted this Tweet. 据推测,该特定的推文是一种较早的流行类型。 然后,该应用将跳过转发该内容,而我一次不会获得4条转发。 最后,我添加了setInterval方法作为计时器,以每小时运行一次该应用程序(3600000ms)。
这是完整的源代码:
const twit = require('twit');
const config = {
Consumer_key:process.env.consumer_key,
Consumer_secret:process.env.consumer_secret,
access_token:process.env.access_token,
access_token_secret:process.env.access_token_secret
}
const Twitter = new twit(config);
让retweet = function(){
让参数= {
问:“ katespade或anthonybourdain或抑郁症”,
result_type:'混合',
lang:'en'
}
Twitter.get('search / tweets',params,function(err,data){
如果(!err){
//如果没有错误,则返回所有4条推文并转发
for(让i = 0; i <4; i ++){
让rtId = data.statuses [i] .id_str;
Twitter.post('statuses / retweet /:id',{
id:rtId
},函数(错误,响应){
如果(响应){
console.log('成功转发');
}
如果(错误){
console.log(err);
}
});
}
}
其他{
console.log('无法搜索推文');
}
});
}
retweet();
setInterval(retweet,3600000); //每60分钟运行一次机器人
到目前为止,我的twitterbot一直表现出色,甚至赢得了一些关注者。 如果您想了解有关抑郁症的争论,或者只是对机器人感到好奇,请在Twitter上查看。
