Qiitaに投稿しました。
ソースと使い方はこっち。
主な内容はQiitaに書いたので開発時点の苦労話でも。
いまひとつSlackのTokenの扱いがよくわからない。
もともと参考にしたやつではherokuにデプロイして各ユーザーのトークンを保存することでbotがユーザーとして振舞うみたいなコードになっていたけれど、このトークンがどこから取得されるのかがよくわからなかった。
なので、暫定的にOAuth Access Tokenを使ってユーザーのアイコンとユーザーを取得することでユーザー"のように"振舞っている。
また最初はLegacy Tokenを用いていたが、OAuth Access Tokenの方が明示的に権限スコープを制御できるのでこちらの方がいいと思う。
なお権限スコープを設定していないAPIを叩くとエラーが発生するのではなく、結果が取得できない(undefinedになる)。
これがわからなくてAPIの使い方が間違っているのかを1から調べなおしていた。
403エラー返してほしい…。
ユーザー名取得の謎
APIを用いてユーザー名を取得するとdisplay_nameとreal_nameが取得できる。
users.profile.get method | Slack
自分はdisplay_nameが入っていたのでそれを使っていたが、テストしてもらったユーザーから「名前がslack api testerになる」という報告を受けて調べたら、ユーザーによってはdisplay_nameが入っていたりいなかったりする。
なのでdisplay_nameがあればそれを使い、なければreal_nameを使う仕様とした。
どのような設定をするとこの現象が起こるのかはよくわからない。
おわりに
わからないことがあるまま動かしているのは危険ではあるが、自分の趣味のslackなのでひとまずはこのまま運用することにする。
Slackが絵文字を大きく表示する機能を実装してくれればいいだけなのに(ぁ