はじめに
Node.jsとExpressを使ってツイッターのbotを作ってみたので作成手順をメモしておきます。
仕様等は以下の通りです。
Botの仕様
- サッカーネタの100RT以上のツイートを自動でリツイートする
- 同一ソースで別ジャンル(野球、プログラミングなど)のBotも作成可能にする
開発理由
- サッカーやプログラミングなど、興味のある分野でバズっているツイートを見逃さないため
BotのTwitterアカウント
https://twitter.com/foot_rt_bot (ジャンル:サッカー)
環境
- 言語: Node.js (v18.12.1)
- フレームワーク: Express
- DB: SQLite
- ORM: Prisma
- Twitter操作用ライブラリ: node-twitter-api-v2
- IDE: VSCode
ソース
Node.jsのインストール
まずは公式サイトからNode.jsをダウンロードしてきてインストール。
インストールが完了したら "node -v"でバージョンを確認。
node -v
>> v18.12.1
続いてExpressのフォルダ生成用のexpress-generatorをインストール。
sudo npm install express-generator -g
インストール後、プロジェクト用のフォルダを作成します。
オプションに"-e"を付けることでテンプレートエンジンにejsを使用できます。
npx express -e FootRTBot
package.jsonを見ると以下のようになっています。
このライブラリをnpmでインストールします。
cd FootRTBot
npm install
インストール後、npm startでサーバが起動します。
npm start
ブラウザを起動し、localhost:3000 にアクセス。Expressのページが表示されることを確認します。
Prismaをインストール
ORM用のライブラリ、Prismaをグローバル環境にインストールします。
sudo npm install prisma -g
プロジェクトのフォルダ内で以下コマンドを実行し、初期化処理を実行。
prisma init
プロジェクトフォルダ内に「prisma」フォルダとschema.prismaファイル、非表示ファイル「.env」が生成されました。
このファイルにDB情報を記述していきます。
デフォルトではPostgreSQLを使用する設定になっているのでSQLite用に書き換え。
DATABASE_URL="file:./data.db"
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
DBのスキーマ情報もこのファイルに定義していくことになりますが、それは後ほど記載していきます。
TwitterAPIの使用準備
続けてBotで使用するTwitterアカウントの用意に入ります。
TwitterAPIを使用する場合、以下の手順が必要です。
TwitterAPI使用時の申請手順
- Twitterアカウントの作成
- プロフィールで電話番号の入力
- APIの申請
- キーを生成
- Elevated accessの申請(APIv1.1を使用する場合のみ)
まずはTwitterアカウントを作成し、電話番号をアカウントに紐付けます。
その上で以下からサインアップし、APIを申請。
続けて、ProjectのDashboardに移動し、「User authentication settings」からEditを選択。
以下のように入力。
- 「App permissions」 … "Read and Write"
- 「Type of App」 … "Web App, Automated App or Bot"
- 「CallbackURL、WebSiteURL」 … "https://twitter.com/"
これでAPIに必要なClientID、ClientSecretが発行されるので忘れずにメモします。
続けて、Dashboardの「Keys And Tokens」から「Access Token and Secret」を生成し、メモしておきます。
APIv2を使用する場合はここまでの手順でOKです。
ただ、APIv1.1を使用したい場合は「Elevated access」の申請が必要です。
今回はTwitterのトレンドを取得したい処理があり、トレンド用のAPIはv1.1にしか用意されていないので申請します。
以下の手順を参考に申請させていただきました。
node-twitter-api-v2をインストール
TwitterAPIをOAuthで直接叩くのは大変なので、ライブラリ「node-twitter-api-v2」を使用します。
こちらはTwitterAPI Ver1、Ver2の両方に対応しており、ドキュメントも充実しています。
以下コマンドでインストールを実行。
npm i twitter-api-v2
log4jsのインストール
ログ出力用のライブラリ、log4jsをインストールします。
npm install log4js
これで事前準備が終わりました。
次に実装に移ります。