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

ブラックPEOPLEくん(Slack Bot)との熾烈な戦い

Last updated at Posted at 2018-11-09

あっ、ずっと前から Slack Bot 作ってみたかったんですよ。

ずっと温めてたけど

なんで急に作ろうと思ったか。

うちの会社の新人ちゃんとその先輩が Unibo から Slack にメッセージを飛ばすみたいなことやってたので、そろそろやろうかなと、思ったわけです。

:link: 新人ちゃんの記事

:link: その先輩の記事

Bot と言ったものの...

よくメンヘラ Bot とか聞きますけど、自分で作るとなると題材がなく...

あっ!

うちの会社のマスコット的な子、PEOPLEくん(非公式)っていうんですけど、これ使おう!

original.png

:arrow_up: これね

でも、個人的なイメージだけど Bot って毒舌だよね。だよね?

ブラックにしてしまえ!

black-people-kun.png

はい、いいのかなこんな事して?

おっと、誰かが来たようだ...

本題(Slack 側)

Slack Bot を作るためには Slack API のページから Slack App を作成する必要があります。

:link: Slack API

1. Create an App を押す

押すだけ!

bot1.png

2. アプリ名と導入する Slack のワークスペースを選択

App Name」にアプリ名を入力します。

利用したいワークスペースを「Development Slack Workspace」から選択して「Create App」!

bot2.png

3. Bot にする!

左側の「Bot Users」を選択すると画面が切り替わるので、「Add a Bot User」押す!

bot3.png

4. Bot に命を吹き込む

Display name」に Bot の名前を入力します。

(日本語も OK だよ!)

Default username」はユーザーネーム、つまり Slack の ID にあたる値です。

こちらは日本語むーりー

bot4.png

Add a Bot User」押したら Bot が産声をあげます。

5. Slack と連動

Basic Information」に戻り「Install your app to your workspace」のトグルを開くと「Install App to Workspace」というボタンが現れます。

bot5.png

押したらワークスペースとの認証の許可を聞かれますので、OK したらSlack に Bot が表示されるようになります!

本題(実装側)

Bot なので会話出来るのがいいなと思っていました。

Real Time Messaging API というものが用意されていますので、これを使って Bot を喋らせて見ようと思います!

(実装は Go言語 です)

1. 実装って言っても1ファイルだけだけど

package main

import (
	"log"

	"github.com/nlopes/slack"
)

func main() {
	// API Client を作成する
	api := slack.New("「Bot User OAuth Access Token」を入力するよ")

	// WebSocket で Slack RTM API に接続する
	rtm := api.NewRTM()
	go rtm.ManageConnection()

	for msg := range rtm.IncomingEvents {
		switch ev := msg.Data.(type) {
		case *slack.MessageEvent:
			// メッセージイベントの場合は、入力メッセージを Log 出力
			log.Printf("Message: %v\n", ev.Text)
			rtm.SendMessage(rtm.NewOutgoingMessage("は?", ev.Channel))
		}
	}
}

コード内に概要を書いていますが、

API クライアント作成 :arrow_right: Slack RTM API に接続 :arrow_right: ​ メッセージイベントの場合に喋る!

です!

ちなみにコメントにある "「Bot User OAuth Access Token」を入力するよ" の部分は Slack API のページから取ってきます。

bot6.png

OAuth & Permissions」の「Bot User OAuth Access Token」の値を貼り付けましょう。

動かしてみた

熾烈な争い.png

この子...嫌い。

まとめ

割とすんなり作れると思います。

いろいろな言語で書けるので、好きな言語で作ってみてはどうでしょう?

参考

参考にさせていただきました!

ありがとうございます!!

:link: Slack Botの種類と大まかな作り方

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