LoginSignup
0
0

More than 1 year has passed since last update.

Node.js + ExpressでTwitterBot作成 #1 『事前準備』

Last updated at Posted at 2022-12-01

はじめに

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用に書き換え。

.env
DATABASE_URL="file:./data.db"
schema.prisma
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

 

これで事前準備が終わりました。
次に実装に移ります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0