Twitchのチャットに書かれた文章を翻訳します。日本語が否かを判定し、日本語を英語に、非日本語を日本語に翻訳します。 エモートは取り除かれます。
./twitchchattranslator.js
適宜バックグラウンドプロセスに落とすか、デーモン化を行ってください。
-
動作確認済み環境
FreeBSD 12.2-RELEASE上のnode v16.10.0にて動作を確認出来ています。
-
必要モジュール
tmi.js, fs, config, log4js, @google-cloud/translate, got
-
https://dev.twitch.tv/ から新たにアプリを登録します。
-
登録したアプリ用のOAuthトークンを https://twitchapps.com/tokengen/ から取得します。
-
翻訳botを利用するユーザーのOAuthトークンを https://twitchapps.com/tmi/ から取得します。
-
https://cloud.google.com/translate/docs/setup?hl=ja を参考にしてサービス・アカウント・キーとなるJSONキーファイルを取得します。
-
上記必要モジュールをサーバにインストールします。
-
config/default.jsonに適当な値を入力します。
- pidFile
- プロセスIDを記入するファイルのファイルパスを設定します。
- googleProjectId
- Google CloudのプロジェクトIDを設定します。
- googleKeyFile
- Google Cloudのサービス・アカウント・キーJSONファイルのファイルパスを設定します。
- twitchUserName
- 翻訳botとして利用するユーザーのユーザー名を設定します。
- twitchOauth
- 翻訳botとして利用するユーザーのOAuthトークンを設定します。
- twitchChannel
- 翻訳botを走らせたいチャンネル名を設定します。(表示名でなくアルファベットの方)
- coolDownCount
- 同一ユーザーから1分間の間に受け付ける最大翻訳回数を設定します。ここに設定した数値までを翻訳します。
- スクリプトを起動します。例ではバックグラウンドに落としていますが、デーモン化したい場合は適宜デーモン化してください。 ex)
(./twitchchattranslator.js) &
- エモートの一覧はルートディレクトリ内の emoticons.json に格納されています。コミットされているファイルには FrankerFaceZ・Better TTV のグローバルエモートが格納されていますが、付属の emotelistupdate.js を利用することで FFZのチャンネルエモートも登録することが可能です。
- emotelistupdate.js は既存の emoticons.json を上書きします。
- emotelistupdate.js は config/jsonupdate.json を設定ファイルとして利用します。
config/jsonupdate.jsonについて:
- twitchChannel
- 翻訳botを走らせたいチャンネル名を設定します。(表示名でなくアルファベットの方)
- twitchUserId
- 翻訳botとして利用するユーザーのユーザーIDを設定します。(数値)
設定を書き換えたら、以下のようにスクリプトを実行して emoticons.json を更新します。
NODE_ENV=jsonupdate ./emotelistupdate.js
ルートディレクトリ内の ignoreline.json ignoreusers.json にそれぞれ「翻訳をしない単語」「翻訳をしないユーザー」を記入出来ます。 ignoreline.jsonに関しては正規表現を利用できます。
ignoreline.json:
{
"ignorelines": [
"(ttp|ttps)\\:\/\/[a-zA-Z0-9+\\.\/%\\\\&\\?#\\$\\!'\\(\\)\\-=_\\:;]+"
]
}
ignoreusers.json:
{
"ignoreusers": [
"moobot",
"streamlabs",
"nightbot",
]
}
翻訳botをチャットからある程度コントロールすることが出来ます。以下のコマンドに対応しています:
- !refreshignoreuser
- ignoreusers.json を更新後実行することでbotに変更を反映させます。モデレーターと配信者のみが利用出来ます。
- !refreshignoreline
- ignoreline.json を更新後実行することでbotに変更を反映させます。モデレーターと配信者のみが利用出来ます。
- !refreshemoticons
- emoticons.json を更新後実行することでbotに変更を反映させます。モデレーターと配信者のみが利用出来ます。
- ログが logs/twitchchattranslator.log に書き出されます。 また、ログのローテーションが日付単位で行われます。ログを書き込むイベントが発生した際に日付が変わっていた場合ローテーションが行われます。