Twitchで配信を始めた時にtwitterとdiscordに自動的に情報を発信するbotです。
twitch-notifier.js [-d]
オプション:
-d: HUPシグナルを受け取った際にトークンを再発行します。
デーモン化して継続的に利用する際に指定してください。
-
動作確認済み環境
FreeBSD 12.2-RELEASE上のnode v16.10.0にて動作を確認出来ています。
-
必要モジュール
@twurple/api, @twurple/auth, @twurple/eventsub, @twurple/eventsub-ngrok, twitter, discord.js, fs, config, log4js
-
上記必要モジュールをインストールします。
-
twitchからのwebhookのコールバック用のゲートウェイとしてngrokを使うので、
ngrokの初期設定を済ませます。
https://dashboard.ngrok.com/get-started/setup -
discordのbotのトークンを取得します。
トークンの取得方法は以下を参考にしてください:
https://qiita.com/1ntegrale9/items/cb285053f2fa5d0cccdf#%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%81%AE%E5%8F%96%E5%BE%97 -
discordのbotを設定し、botを目的のサーバーに追加します。
bot用の権限は"Manage Roles", "Send Messages", "Manage Messages", "Manage Threads"を選びます。
botの権限設定については以下を参考にしてください:
https://qiita.com/1ntegrale9/items/cb285053f2fa5d0cccdf#%E8%AA%8D%E8%A8%BCurl%E3%81%A7%E6%A8%A9%E9%99%90%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B -
discord通知用のRoleをサーバーの中に作成します。
-
discord通知用チャンネルIDを取得します。
取得方法に関しては以下の記事を参考にしてください:
https://support.discord.com/hc/ja/articles/206346498-%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC-%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC-%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8ID%E3%81%AF%E3%81%A9%E3%81%93%E3%81%A7%E8%A6%8B%E3%81%A4%E3%81%91%E3%82%89%E3%82%8C%E3%82%8B- -
discord通知用Role IDを取得します。
Roleを追加したサーバー内の任意のテキストチャンネル内で
以下のように入力するとRole IDを取得することが出来ます。
\@Role名
- 設定ファイル(config/default.json)に以下の記述を書き入れます。
- isNgrok
- 通知botをngrokを通して接続するかを設定します。trueの場合ngrokを利用します。
- rphostName
- リバースプロクシを利用する場合に、リバースプロクシのホスト名を指定します。isNgrokがtrueの場合この値は参照されませんので、その場合は任意の値か空白で構いません。
- rpportNumber
- リバースプロクシを利用する場合に、通知bot側が待ち受けるポート番号を指定します。isNgrokがtrueの場合この値は参照されませんので、その場合は任意の値か空白で構いません。
- pidFile
- pidファイルのファイルパスを設定します。-dオプションを付けて起動している時に、HUPシグナルを受け取った際にここに記述されるプロセスIDに対してHUPシグナルを送ります。
- twitchUserName
- 通知対象のtwitchユーザー名を設定します。
- twitchClientId
- twitch APIのクライアントIDを設定します。
- twitchSecret
- twitch APIのシークレットを設定します。
- twitchChannel
- 実際に通知したいtwitchのチャンネルURLを設定します。ここに書いたURLがツイートに載ります。
- twitterConsumerKey
- twitter APIのコンシューマキーを設定します。
- twitterConsumerSecret
- twitter APIのコンシューマシークレットを設定します。
- twitterAccessTokenKey
- twitter APIのアクセストークンキーを設定します。
- twitterAccessTokenSecret
- twitter APIのアクセストークンシークレットを設定します。
- discordToken
- discord botのトークンを設定します。
- discordRoleId
- discordで通知する宛先のRole IDを設定します。
- スクリプトを起動します。例ではバックグラウンドに落としていますが、デーモン化したい場合は適宜デーモン化してください。 ex)
(./twitch-notifier.js -d) &
- ログがlogs/twitch-notifier.logに書き出されます。 また、ログのローテーションが日付単位で行われます。ログを書き込むイベントが発生した際に日付が変わっていた場合ローテーションが行われます。