使用 Twitter 机器人获取 Hey 邀请码
🤔 这是怎么回事?
大约两年前,我写了一篇博客文章,介绍如何用 17 行代码构建一个 Twitter 机器人(https://dev.to/omarhashimoto/how-to-build-a-simple-twitter-bot-in-17-lines-ofcode-2aan)。从那时起,我一直在尝试这些机器人的不同用途。《堡垒之夜》手游和《使命召唤:手游》就是两个成功获取 Beta 访问权限的例子。
最近一次成功的狩猎是获得了一个 Hey 邀请码,但还不完全是,请继续阅读并做出判断。
💭 那么我该怎么做呢?
我通常会为这些寻宝活动准备一个模板。如果你还没读过我之前的博客文章,强烈建议你读一读。它很好地介绍了如何在 Twitter 上创建你的第一个应用,以及如何启动和运行你的第一个机器人。
在开始编写代码之前,我首先花了一些时间研究人们在讨论“嘿”时使用的关键词/短语。我跟踪了这些关键词,发现最受欢迎的是以下这些:
['hey invite', 'hey code', '#hey', 'hey.com']
然后我发现 Hey 邀请代码是 7 个字符的字母数字字符串,因此我创建了一个正则表达式模式,可用于匹配推文中可能的代码:
/\b[A-z0-9]{7}\b/g
显然这并不完美;如果单词长度超过 7 个字符,系统就会匹配那些不需要的单词。我手动操作了一下,还是没问题的。
经过这个研究阶段,我决定拿出我的 Twitter-bot-invite-code-hunter(没错,我就是这么叫它的)。它利用 Twit 库来轻松使用 Twitter 的 API。初始设置包括导入库并设置应用的密钥:
var Twit = require('twit');
var T = new Twit({
consumer_key: '...',
consumer_secret: '...',
access_token: '...',
access_token_secret: '...',
})
之后,我们可以使用流来监听新的推文,同时跟踪特定的关键词,也就是我上面提到的关键词:
var stream = T.stream('statuses/filter', { track: ['hey invite', 'hey code', '#hey', 'hey.com'] });
完成此操作后,我们会在每条新推文上收听此流,如下所示:
stream.on('tweet', function (tweet) {
})
现在我们有了一个tweet
对象。想要了解更多关于这些对象属性的信息,我推荐你查看 Twitter 关于 Tweet 对象的官方文档:https://developer.twitter.com/en/docs/tweets/data-dictionary/overview/tweet-object。
事实证明,它tweet
有一个名为text的属性,顾名思义,它包含推文的文本。现在,我们可以将它与我们的正则表达式模式进行匹配,如下所示:
match_res = tweet.text.match(/\b[A-z0-9]{7}\b/g)
match_res
现在包含符合我们所需条件的单词。然后我们可以执行以下操作:
console.log(tweet.text)
if (match_res != null) {
console.log("IMPORTNAT: " + match_res)
console.log("")
}
console.log("")
这会检查是否有任何单词匹配,如果匹配,就会打印出来。差不多就是这样了。机器人可以运行了。
🤑 成功了吗?
我真希望它能像获取《堡垒之夜》和《使命召唤》代码一样简单(那些代码不到5分钟就能搞定)。可惜的是,我等了两个多小时才成功,因为新的Hey邀请发出后,代码就开始源源不断地涌入。
等了大概2个小时后,看到有人在推特上发了代码,我特别兴奋,赶紧打开Hey,输入了代码,竟然成功了!!
我兴奋极了,慢慢地输入了我的邮箱地址,打开密码管理器,生成了密码。点击提交时,系统提示“此代码无效”。说实话,我当时挺失望的,我以为输入代码后就自动为我保留了,但没想到真的有。总之,我继续等,大约20分钟后,机器人又发了一条推文,内容大致是“我有一个嘿代码,想要的话告诉我”。于是我赶紧在推特上搜索到这位用户,并直接私信他们,说如果他们还有代码的话,能发给我就太好了。幸运的是,他们发了代码,我就能按照自己的节奏(相当慢)注册了。
我不知道你是怎么想的,但我仍然认为这是一次成功的机器人狩猎,尽管这需要更多的体力劳动。不过,嘿(双关语),最终我还是成功进入了,而且我非常喜欢这次体验。不,说真的,你真的应该去看看。嘿,这太棒了。
💻完整代码
对于那些有兴趣尝试运气的人,这里是我使用的完整代码:
var Twit = require('twit');
var T = new Twit({
consumer_key: '...',
consumer_secret: '...',
access_token: '...',
access_token_secret: '...',
})
var stream = T.stream('statuses/filter', { track: ['hey invite', 'hey code', '#hey', 'hey.com'] });
console.log('twitter bot started');
stream.on('tweet', function (tweet) {
match_res = tweet.text.match(/\b[A-z0-9]{7}\b/g)
console.log(tweet.text)
if (match_res != null) {
console.log("IMPORTNAT: " + match_res)
console.log("")
}
console.log("")
})
真心希望这篇文章对你有帮助。关注我的推特,我有时会发布一些有趣的内容@oohsinan。
鏂囩珷鏉ユ簮锛�https://dev.to/oohsinan/getting-a-hey-invite-code-using-a-twitter-bot-5ao1