KibelaとSlackを連携させるBotを作った話

2 min read読了の目安(約1900字 1

Slack→Kibela カスタム絵文字送信ボットの作成

今思えばKibelaの新機能|チームオリジナルのカスタム絵文字を追加できますという記事がすべての始まりだった。

カスタム絵文字が使えるということは当然、Slackと同じものを全部使いたい。でも1個1個登録していくわけにはいかない。ならば自動化だ! ということでSlackの絵文字をKibelaに移植するBotを作ろうということになった。

Slackアプリと言えばBolt for JavaScriptかなということでまずはこれを導入。Kibelaの方はGraphQLベースのAPIがあって、これで絵文字を登録できる。

というわけで最初にやるためのバルクインポートと、Slackで絵文字が追加されたときのWebhookで個別に同期する機能を作った。

ちなみに削除は今のAPIだと微妙にやりにくいので、ほったらかしになっている。
一応、その辺の対応をkibela/kibela-api-v1-document#48でお願いしているところ。

URL展開

そういえばKibela記事のURLって展開されなくて不便だな、と思っていたのでせっかくなのでKibela-Slack連携の第2の機能ということで上で作ったボットに機能を追加した。これもBoltとKibela GraphQLで楽々実装できた。

この時点ではこんな感じ。

サマリーがやたら長くなるとか、そこ読んでも分からん、とかいう話が色々あったものの、何もないよりは良いと評判だった。

謎機能の実装

さて、右になんか画像付けるかと思って付けたもののKibelaのアイコンそのままなのはなんか面白くない。けど特に思い浮かばないし、ほったらかしにしていた。

それとは別に絵文字自体を作る方法関係で日本語の分かち書きあたりを調べていたところ、「そういえばワードクラウドって流行りだったな」ということでふーんと見ていたところ・・・
「Kibelaの記事でワードクラウド作ればいいじゃん!」 という発想にたどり着いた。

例の記事のマークダウンをコピーしてくるとこんな感じ。

なんとなく雰囲気が分かって良い感じ(「ぼかし」はどこへ行ってしまったのだろう・・・)。

そして要約文のリストラへ

いっそ「先頭から切り出した」だけの文章を無くしちゃって、その分画像を大きくしてしまえ、というのがこれ。

開発

GitHubの kounoike/slack-to-kibela-emoji-syncer にありますのでご参考までに。見れば分かると思いますがmaster直push、中身も適当なので動かなくても怒らないでくださいね・・・