如何使用 Node.js 和 Heroku 创建 Twitter 机器人
目录
数据科学机器人
制作 Twitter 机器人是使用 Twitter API 的众多用例之一。机器人可以用来提升你的业务,通过自动回复协助客户,自动转发特定关键词的推文等等。
本文将介绍我如何The Data Science Bot
使用 Node.js创建机器人。
目录
第一步:申请Twitter开发者账号
在我看来,这是最重要的一步,也许是最困难的一步。
- 登录Twitter
- 前往developers.twitter.com并点击“申请开发者账户”
- 选择申请类型,例如学生/商务/业余爱好者等。
- 请说明您的申请目的。请尽可能具体地说明。
在申请之前,请确保您已仔细阅读开发者协议和政策、自动化规则以及Twitter 规则。
不满足这些条件将导致您的申请被拒绝
阅读有关如何申请 Twitter 开发者帐户的完整文章
第 2 步:在 Twitter 上创建应用程序
一旦您的 Twitter 开发者帐户访问获得批准。
-
在apps.twitter.com上创建一个 APP 。
填写所需的详细信息。
⚠️警告(任何情况下都不要泄露 API 密钥)。
步骤3:设置开发环境
确保您的电脑上安装了 Node.js 和 npm。
对于 Ubuntu,使用以下命令安装
sudo apt install nodejs
sudo apt install npm
对于其他发行版,请单击此处获取安装说明。
创建一个名为 的目录your-botname
。
在我的例子中,我将其命名为the-datascience-bot
。
要初始化 git 环境并twit
使用安装包,请在目录中npm
输入以下命令:your-botname
恭喜!您已成功设置 Node.js 开发环境 🎉🎉
步骤4:代码
- 首先,我们必须进行身份验证
twit
。为此,我们将使用生成的API 密钥链接我们的 Twitter 应用和代码。
创建一个名为 的文件config.js
。
将以下代码放入config.js
文件中
配置.js
将您的密钥从 Twitter 应用程序仪表板复制过来。
- 接下来,我们在文件中编写机器人的代码
bot.js
。
这是代码。
机器人.js
const config = require('./config')
const twit = require('twit')
const T = new twit(config)
function retweet(searchText) {
// Params to be passed to the 'search/tweets' API endpoint
let params = {
q : searchText + '',
result_type : 'mixed',
count : 25,
}
T.get('search/tweets', params, function(err_search, data_search, response_search){
let tweets = data_search.statuses
if (!err_search)
{
let tweetIDList = []
for(let tweet of tweets) {
tweetIDList.push(tweet.id_str);
//more code here later...
}
// Call the 'statuses/retweet/:id' API endpoint for retweeting EACH of the tweetID
for (let tweetID of tweetIDList) {
T.post('statuses/retweet/:id', {id : tweetID}, function(err_rt, data_rt, response_rt){
if(!err_rt){
console.log("\n\nRetweeted! ID - " + tweetID)
}
else {
console.log("\nError... Duplication maybe... " + tweetID)
console.log("Error = " + err_rt)
}
})
}
}
else {
console.log("Error while searching" + err_search)
process.exit(1)
}
})
}
// Run every 60 seconds
setInterval(function() { retweet('#DataScience OR #DataVisualization'); }, 60000)
让我们来分析一下。
- 我们使用来自以下位置的配置详细信息来初始化 twit 对象
config.js
- retweet 函数首先调用
search/tweets
给定搜索查询的 API 端点。在我的例子中,它是“#DataScience 或 #DataVisualization”。 - 我们将以下参数传递给搜索 API
q
:搜索查询result_type
:‘混合’,包括最新推文和热门旧推文count
:一次检索的推文数量
- 检索到的JSON对象包含带有 #DataScience 或 #DataVisualization 的推文列表。
-然后,我们将每个推文 ID 传递给statuses/retweet/:id
API 端点,该端点会转发该推文。
使用以下命令在本地测试机器人:
node bot.js
您的 Twitter 时间线应该显示转发。
如果不起作用,请尝试在控制台上调试。
步骤 5:部署到 Heroku
- 在Heroku上创建帐户
- 在 Heroku 上创建一个名为“your-botname”的应用程序
确保本地项目目录的名称与 Heroku 项目名称完全相同。
- 在你的电脑上安装heroku-cli
如果你有基于Ubuntu/Debian 的发行版,那么使用以下命令安装heroku-cli
curl https://cli-assets.heroku.com/install-ubuntu.sh | sh
对于其他环境,可以在此处找到安装说明
- 创建一个名为“Procfile”的文件,其中包含以下代码
进程文件
worker: node bot.js
- 登录 Heroku CLI
$ heroku login
这将在 heroku 上打开一个登录链接,您必须在其中输入密码。
- 使用以下命令部署到 Heroku
最后一步
worker
在 Heroku 上启动
测功机。 前往dashboard.heroku.com/apps,然后点击你的机器人应用。
你的机器人已经准备好了!🎉🎉
第六步:如何避免重复转发
在我们编写的 for 循环中添加以下代码//more code here later..
检查重复
然后在循环之外-
// Utility function - Gives unique elements from an array
function onlyUnique(value, index, self) {
return self.indexOf(value) === index;
}
// Get only unique entries
tweetIDList = tweetIDList.filter( onlyUnique )
实用函数onlyUnique
也可以写在转发函数外面。
这将使我们的机器人避免重复转发。
上述代码的简要解释
-
每条推文都有一个独特的属性
id_str
。
如果你转发某人的推文,它会有不同的属性id_str
。 -
搜索 API 可以找到原始推文和转发的推文。
-
当我们调用
statuses/retweet/:id
API 端点时,它会转发所有推文。 -
对于 Twitter 新手用户来说,您的机器人似乎已经转发了相同的内容两次或更多次。
像这样👇
- 如果推文文本以“RT @”开头,则该推文为转发推文,其 与
id_str
原推文不同。我们取原推文id_str
的,并使用以下函数过滤重复内容onlyUnique
您可以使用 API 做更多事情。查看 API 参考 ( https://developer.twitter.com/en/docs/api-reference-index ) 了解更多详情。
源代码 -
完整的源代码可以在这里访问
数据科学机器人🤖
该机器人转发带有#DataScience和#DataVisualization标签的推文
这是我的机器人的链接https://twitter.com/datasciencebot_
好的,就这样!
这是我在开发者社区发表的第一篇技术文章。
非常感谢大家的反馈!
谢谢阅读!😊
文章来源:https://dev.to/sumedhpatkar/how-i-created-a-twitter-bot-using-node-js-and-heroku-368b