LoginSignup
2
1

More than 5 years have passed since last update.

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

Posted at

はじめに

この記事は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とかを作ったら、色々はかどりそうですよね。

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

参考

2
1
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
2
1