Ruby
Slack

rubyのスクリプトでslackのAPIを使って簡単なメッセージを投稿してみる_100DaysOfCodeチャレンジ31日目(Day_31:#100DaysOfCode)

はじめに

この記事はTwitterで人気のハッシュタグ#100DaysOfCodeをつけて、
100日間プログラミング学習を続けるチャレンジに挑戦した31日目の記録です。

動作環境

  • Ruby 2.4.1p111 (2017-03-22 revision 58053)

本日学んだこと

  • slackのAPIを使って、Botにメッセージを送ってみる

SlackのAPIを使うために必要なTOKENを取得する

公式サイト: https://api.slack.com/

上記のリンク先からアクセスして、「start building」ボタンを押します。

「Create a Slack App」というモーダルが立ち上がるので、任意の名前と開発対象となる既存のワークスペースを選択します。

「Basic Information」というページに遷移するので、「Add features and functionality」から追加する機能を選択します。

今回はBotsを選択しましょう。

Bot Userページに遷移するので、「Add a Bot User」ボタンを押します。

「Display name」と「Default username」に表示させたい名前を入力して、「Add Bot a User」ボタンを押します。

サイドメニューにある「OAuth & Permissions」を選択し、「Install App to Workspace」を押しましょう。

確認画面が表示されるので、「許可する」を選択します。

そうすると、画面が遷移し、「OAuth & Permissions」ページに「OAuth Access Token」と「Bot User OAuth Access Token」という二つのトークンが表示されているのがわかります。

今回のスクリプトでは、「OAuth Access Token」を使います。

ターミナルの作業:Rubyのスクリプトを作成する

ここからはターミナルの作業です。

任意の場所で、適当なディレクトリを作成します。rubyでslackのAPIを使うために、gemをインストールするので、bundle initをしておきましょう。

$ mkdir slack-bot
$ cd slack-bot
$ bundle init

Gemfileに次のgemを追加します。

gem 'slack-api'
gem 'dotenv'

bundle installします。

$ bundle install --jobs=4

続いて、先ほど取得した「OAuth Access Token」をdotenvに記述します。

SLACK_TOKEN="jfirjirifxkXXXXXXXX45454fekdoe0fikeo"

そして、ここからslackのAPIを使うためのファイルを作成します。

touch slack.rb

slack.rbの中身はこんな感じです。

#slack.rb
require "dotenv/load"
require "slack"

Slack.configure do |config|
  config.token = ENV['SLACK_TOKEN']
end


# ワークスペースにいる全員にメッセージを送る
def send_message_to_all
  Slack.users_list["members"].each do |member|
    Slack.chat_postMessage(channel: member["id"], text: "Hello! テストだよ!")
  end
end

send_message_to_all

保存したら、ターミナルで実行してみましょう。

$ bundle exec ruby slack.rb

対象となるワークスペースで、テキストが表示されていたら成功です。

これを応用して、ポモドーロで25分ごとに休憩を促すBotとかを作ったら、色々はかどりそうですよね。

時間見つけて実装してみようと思います。

参考

https://www.rubydoc.info/gems/slack-api/Slack/Endpoint/Chat#chat_postMessage-instance_method

https://api.slack.com/methods/chat.postMessage