LoginSignup
6
3

More than 5 years have passed since last update.

SlackのAPIを最低限かつ簡単に使いたいから simple_slack というgemを作った

Posted at

概要

  • SlackのAPIが使えるgemがたくさんある。
  • けど多機能過ぎて逆に簡単なことをする方法が分からなかった。
  • あとSlackからのレスポンスが ID だからよく分かんない。

だから必要最低限の機能を名前ベースで使えるようなgemを作ろう

ということで作りました。

使い方

1.SLACK API TOKEN を取得する

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とかを使った方がいいかもしれない…

6
3
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
6
3