英語帝国を打倒しよう

言語の壁に計算機で挑もう!

【Slack】リアクションが押されたらDeepLで自動翻訳してくれるアプリを作成

 

初めに

研究室に留学生が多く、Slackに翻訳botを入れたいなぁと思っていました。そこで、Slackでリアクションを押すとDeepLが翻訳してくれるものを作りました。(他にも、generalチャンネルを全部英語に直して流すチャンネルなど、翻訳系の機能を作ったのですが、今使われてるのはこれだけなのでこれが一番便利っぽいです。)

似たような取り組みは既に無限回あるのですが、Slack側の設定が結構難しいのにそれが書かれてなかったり、記事が古くてSlackのAPI仕組みが今と違っていて困ったりなどした記憶があり、記事にしておくことにしました。



用意するもの

  • 24時間動かせる計算機(クラウドでも、あいているPCでもOK)

  • DeepL APIのアカウント

 

Slack側の設定

これがマジで一番難しいです。

まず、こちら(slack-api)にアクセスして「create app」を押します。

次に、左側のサイドバーのOAuth & PermissionsというところからScopeに飛んで、アプリに与える権限を設定します。上の画像の画像のような機能を追加するには、「書き込み(chat:write)」、「(リアクションの)読み取り(app_mentions:read)」が必要です。また、privateのチャンネルを読む場合はgroups:writeとが必要です。



この設定が終わったら、Install App してOAuth tokenを控えましょう。

自分もなぜこうなっているのかよく分からないのですが、SlackにはBot token(?)とApp token(?)というものが二つあります。BotとAppでどちらかが抽象的な概念なんでしょうか?

Install Appして得られたこれはBot tokenになります。



次に、Basic Informationに飛んで、下の方のApp-Level TokensからGenerate Token and Scopesで「connections:write」を付与し、Tokenを発行してください。これをApp tokenと呼びます。



 

Pythonでコードを作成し実行

こちらからダウンロードしてきて実行してください。

https://github.com/craggy-otake/reaction_translator

deepl.txt、reactionbot.txt、reactionapp.txtファイルを作成し、tokenを入れてください。

 

チャンネルにアプリを追加

これが地味に難しいんですが、チャンネルのチャンネル名をクリックして、「integration」をクリックすると、アプリを追加できます。

凄く面倒なこと

アプリの権限の設定とかをいじるときに、「アプリ版のslack」をポチポチ押してても全然たどり着けなくて、slack-apiのホームページには直接行かないといけなかった記憶があります。

 

その他

これを作ったのが半年以上前なので細かいことは忘れました。コメント頂ければ対応します。