15
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SlackAdvent Calendar 2016

Day 11

Clojureでコードの問題を解けるまでleave出来ないbotを作ってみた

Posted at

image

投稿が遅れてしまい大変申し訳ありません。。。
この記事は『Slack Advent Calendar 2016』11日目の記事です。
前回はhoto17296さんの「Slack 特化 Bot フレームワーク「Shrike」」でした。

Botを作った経緯

当Advent Calendarで1日目の記事から既に圧倒的な存在感を出していた蟻地獄botですが、何がきっかけだったのかインターン先のSlackにもゲリラ的に出現しており、着々と治安維持を進めております。

そんな恐ろしい働き者の蟻地獄botですが、ふと"蟻地獄がプログラミングの問題を出題して、解けた人だけ退出出来るようにすれば馴染みのない言語でもゲーム感覚でみんな書いてくれるのでは…?"と思い、今回のbotの実装に踏み切りました。

実際の挙動

以下の容量でプライベートチャット等を通して問題を登録し、後は動作させたいチャンネル(もしくはグループ)へinviteすれば動作します。

image

このbotが動作しているチャンネルを離れようとすると、↓のように強制的に再度inviteされた後、登録された問題からランダムに出題されます。

image

後はリプライで答えを書いて問題を解くだけです!

image

見事回答できたメンバーは、botによる賞賛のもとチャンネルを抜ける事が出来ます

技術的な話

今までSlack向けのbotを作る際は、たいへんお手軽で便利なliquidzさんのjubotをお借りして作っていたのですが

  • Incoming Webhook or Outgoing Webhookでのbotしか実現できない
  • チャンネルへの招待等のAPIに対応していない

と言った経緯があったため、今回始めてclj-slackを使用した実装となりました。
jubotのようなフルスタックな実装でない分手間はかかりますが、Slack APIの仕様にそっくりでクセがなく大変扱いやすい印象でした。
ClojureによるSlack botはGo等に比べればあまり盛り上がっていない印象がありますが、普通に使えるライブラリも揃っているので、Clojureを書き慣れているのであれば率先して使っても良いかな、と思った次第でした。

また作成したBotのソースコードはGitHubで公開しておりますので、是非お役立てください。
それでは、良い年末を!

15
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?