概要
- SlackのAPIが使えるgemがたくさんある。
- けど多機能過ぎて逆に簡単なことをする方法が分からなかった。
- あとSlackからのレスポンスが ID だからよく分かんない。
だから必要最低限の機能を名前ベースで使えるようなgemを作ろう
ということで作りました。
使い方
1.SLACK API TOKEN を取得する
-
https://api.slack.com/docs/oauth-test-tokens とかで
create token
ボタンを押してAPIのトークンを取得する。
2.gem をインストールする
gem install simple_slack
3.gemを使う
下記のtokenは上記で取得したトークンを入れる。
sample.rb
require 'simple_slack'
client = SimpleSlack::Client.new(token)
client.get.users
#=>チームに参加しているユーザの slack id と ハンドルネーム を取得する。
#=>[ { :id => "U0PPPPP", :name => "oyaji" }, { :id => "U0AAAAA", :name => "kodomo" }, ... ]
4.出来ること
下記の方法で作成した client オブジェクトがあることを前提に書いていきます。
require 'simple_slack'
client = SimpleSlack::Client.new(token)
4-1.get系
- 全ユーザのidとハンドルネームを取得する
client.get.users
#=>[ { :id => "U0PPPPP", :name => "oyaji" }, { :id => "U0AAAAA", :name => "kodomo" }, ... ]
- 指定したユーザのidとハンドルネームを取得する
# ハンドルネームから取得
client.get.user("oyaji")
#=>{ :id => "U0PPPPP", :name => "oyaji" }
# idから取得
client.get.user("U0PPPPP")
#=>{ :id => "U0PPPPP", :name => "oyaji" }
- 全チャンネルのidとチャンネルネームを取得する
client.get.channels
#=>[ { :id => "C0PPPPP", :name => "general" }, { :id => "C0AAAAA", :name => "random" }, ... ]
- 指定したチャンネルのidとチャンネルネームを取得する
# チャンネルネームから取得
client.get.channel("general")
#=>{ :id => "C0PPPPP", :name => "general" }
# idから取得
client.get.channel("C0PPPPP")
#=>{ :id => "C0PPPPP", :name => "general" }
- 全員のダイレクトメッセージ宛のidと該当するユーザの情報を取得する
client.get.ims
#=>[ { :id => "D0PPPPP", :user => { :id => "U0PPPPP", :name => "oyaji"} }, { :id => "D0AAAAA", :user => { :id => "U0AAAAA", :name => "kodomo" } }, ... ]
- 指定したユーザのダイレクトメッセージ宛を取得する
client.get.im("oyaji")
#=>{ :id => "D0PPPPP", :user => { :id => "U0PPPPP", :name => "oyaji"}
4-2.post系
- 指定したチャンネルに投稿する
# randomチャンネルに「こんにちは」という文字を「とりりん」という名前で投稿する
client.post.channel(to: "random", text: "こんにちは", name: "とりりん")
#=> true
- 指定した相手にダイレクトメッセージを送る
# ダイレクトメッセージでoyajiユーザに「こんにちは」という文字を「とりりん」という名前で投稿する
client.post.im(to: "oyaji", text: "こんにちは", name: "とりりん")
#=> true
4-3.bot系
- 簡単なbotを作る
bot = client.bot
# oyajiユーザがrandomチャンネルに「こんにちは」を最初に含む文字を投稿したら反応するよう設定
bot.set_condition(chennel: "random", user: "oyaji", text: /\Aこんにちは/)
# 上記の条件にひっかかったときに、generalチャンネルにお報せ君という名前で「親父さんが挨拶をされました」というチャットを投稿
bot.set_responce(channel: "general", user: "お報せ君", text: "親父さんが挨拶をされました")
# botを起動する
bot.start
- 条件を複数設定したいときは配列で渡せばいい。
bot.set_condition(chennel: ["random", "general"], user: ["oyaji", "kodomo"], text: [/\Aこんにちは/, "こんばんは"])
その他
バグがまだ多いのもあって最低限の利用。既存の何かに簡単に通知機能作るとかならこれでいけるはず。
でもこんなの使わなくてもSlackが用意してくれているhubotとかを使った方がいいかもしれない…