初めに
研究室に留学生が多く、Slackに翻訳botを入れたいなぁと思っていました。そこで、Slackでリアクションを押すとDeepLが翻訳してくれるものを作りました。(他にも、generalチャンネルを全部英語に直して流すチャンネルなど、翻訳系の機能を作ったのですが、今使われてるのはこれだけなのでこれが一番便利っぽいです。)
似たような取り組みは既に無限回あるのですが、Slack側の設定が結構難しいのにそれが書かれてなかったり、記事が古くてSlackのAPI仕組みが今と違っていて困ったりなどした記憶があり、記事にしておくことにしました。
用意するもの
Slack側の設定
これがマジで一番難しいです。
まず、こちら()にアクセスして「create app」を押します。
次に、左側のサイドバーのOAuth & PermissionsというところからScopeに飛んで、アプリに与える権限を設定します。上の画像の画像のような機能を追加するには、「書き込み()」、「(リアクションの)読み取り()」が必要です。また、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のホームページには直接行かないといけなかった記憶があります。
その他