概要
Discord 上で発言を翻訳して返してくれるBotを書いてみたので共有します。サンプルコード的で平易なつくりです。似たような事をされたい方は、スニペットとしてご自由にご引用ください。
しくみ
python で書いており、discord.py を利用しています。Dockerコンテナとしてデプロイできる構成にもしています。発言内容は Google の Cloud Translation API で翻訳されます。APIは google-cloud-translate を用いて利用されます。
Cloud Translation API は GCP 内の一サービスであり、試用期間内であれば無料ですが、一定量または期間経過後の利用が有料になる点にご注意ください。本サンプルは、ある程度統制や管理が必要なケースにも応用・転用できるよう、はじめから有償契約環境を使う前提で書いてます。無償を前提にしたつくりにされたい場合は Google Translate Ajax API を googletrans を介して利用する手段もあります。
どうなるの
こうなります。構文はリポジトリの readme をご覧ください。
クイックスタート
readme.md に書いてしまっているので、書いてないDockerコンテナの起動の仕方を記述します。
$ git clone https://github.com/coleyon/disco-bilingual
$ cd disco-bilingual
### ここで、サービスアカウントJSON形式のキーファイルをコピーして `./sa-key.json` に配置し
### `docker-compose.yml` の `GOOGLE_APPLICATION_CREDENTIALS` や `DISCORD_BOT_TOKEN` をセットする。
$ docker-compose build
$ docker-compose up -d
小話
Discord が資金調達をして、ゲーマー向けからより広いユーザー向けに成長しようとしています。また、今更な話題ですがチャットのリモートワーク利用が増えてきました。こういった流れを受けて、DiscordはBotの安全性を高めるために、このような規約や仕組みの強化を通知しました。
これからBotを開発される方、広く展開される方は、開発者向けの規約に目を通されるとよいと思います。
良かった情報源
DiscordのBotを書くときに、参考になる度が高かった記事を紹介します。