![見出し画像](https://assets.st-note.com/production/uploads/images/12652907/rectangle_large_type_2_0131f7ae89e6ea82a3ff74682a7969be.jpeg?width=1200)
[翻訳]たった17行のコードでTwitterのbotを作る方法
↓↓↓Thanks Omar Sinan!! ↓↓↓オマー・スィナンさんの元記事はこちら↓↓↓
以下本編('ω')ノ
数か月前、「特定のユーザのリストからなんでもRTする」Twitterのbotを製作しました。で、実は、それがたったの17行のコードで出来たんです。これを記事にしようと思ったきっかけは、botを自分で作ろうと思ったときに、オンラインサービスだと安いツールでも15ドルはするのっておかしくない?と思ってるからです。じゃあ付いてきてくださいね。
以下が、botを作るのに使うものたちです。
・Node.js — こちらでインストールしてください。
・twit — 上記のNode用のTwitter API クライアントです。
なんと基本的にこの2つだけです!
◆アプリを作るぞ◆
まずコードを書き出す前に、Twitterアプリの設定をしておきましょう。以下のURLから設定できます。
“Create New App”ボタンを押下すると、下記の画面に遷移します。
空欄を埋めてください。ウェブサイトをお持ちでなければ、 “Website”の欄には https://www.example.com とご入力ください。
"Create your twitter application"を押下後、“Keys and Access Tokens”のタブに以下4つを入れます(重要):
・Consumer Key
・Consumer Secret
・Access Token Key
・Access Token Secret
“Access Token Key”や “Access Token Secret” が見当たらない場合は、“Create my access token” ボタンを押してください。
◆プロジェクトの初期化◆
Twitter botの新しいディレクトリ用に、コマンドプロンプトまたはターミナルやドライブを開いたらコマンド実行です。
npm init
次に正しい依存関係をインストールする必要があります。今回の場合は以下のひとつだけですので実行しましょう。
npm install twit --save
そうしたら、 index.js というファイルを作ります。
<注意> 「npm init」を実行するときにエントリーポイントを変更した場合は、package.jsonの中身と対応したファイル名にしましょう。何も変更を加えていなければ、index.jsでOKです。
◆お楽しみのコーディングです◆
お好きなテキストエディタを開き、TwitterのAPIに対してリクエストを送るTwit instanceを作ります。
var Twit = require('twit')
var T = new Twit({
consumer_key: ' ... ',
consumer_secret: ' ... ',
access_token: ' ... ',
access_token_secret: ' ... ',
})
keyたちの中身は ' ... ' にしておきましょう。
次に、RTしたいユーザのIDをstringで持つarrayを作ります。(以下のコードスニペットに入れたIDは変更可です)
var users = ["10228272", "155659213", "783214"];
そうしたら、T.stream(パス, [引数])を使いましょう。
var stream = T.stream('statuses/filter', {follow: users});
2つ目の引数ですが、キーに"follow"、値が有効な”users”でなくてはいけませんので注意しましょう。
stream.on('tweet', function (tweet) {
if (users.indexOf(tweet.user.id_str) > -1) {
console.log(tweet.user.name + ": " + tweet.text);
T.post('statuses/retweet/:id', { id: tweet.id_str }, function (err, data, response) {
console.log(data)
})
}
})
↑の機能は、streamの中に(tweet)が渡されるたび動くものです。
2行目のifが、「今ツイートしたユーザのIDが"users"のarrayに入っているか」を確認するのに大事になってきます。
4行目は基本的にtweet.id_strのIDでされたツイートをRTするときに使うやつです。tweetオブジェクトがもつほかのプロパティを確認するには、こちらのURLをチェック!
◆botを動かしてみよう!◆
これで基本的には完了です。たった17行でbotを作れました!動かすには、コマンドプロンプトかターミナルで以下を実行するだけです。
node index.js
◆今後のアップデートに関して◆
botをHerokuにデプロイする方法とかも投稿したいですね。(ローカルで休みなしに動かさなくてもいいやつ)
◆最終的な全体コード◆
var Twit = require('twit')
var T = new Twit({
consumer_key: ' ... ',
consumer_secret: ' ... ',
access_token: ' ... ',
access_token_secret: ' ... ',
})
var users = ["10228272", "155659213", "783214"];
var stream = T.stream('statuses/filter', {follow: users});
stream.on('tweet', function (tweet) {
if (users.indexOf(tweet.user.id_str) > -1) {
console.log(tweet.user.name + ": " + tweet.text);
T.post('statuses/retweet/:id', { id: tweet.id_str }, function (err, data, response) {
console.log(data)
})
}
})
以上です!('ω')ノ