最近、外に出かけることが少なくなってきたので、slackのbotで友達を作ろうと思い、Go言語でslackのbotを作る方法を調べました。
手始めに@で話しかけた時に反応する簡単なbotを作りました。
Botsをワークスペースに追加する
slackのbotを作るときはslack APIを作る場合もありますが、
簡単なbotの場合は、slackが公式で提供しているbotsで充分みたいです。
下のURLにアクセスしてワークスペースにbotsを追加します。
https://my.slack.com/services/new/bot
Botsが出来ること
・slackでキーワードを入力すると回答
・slackのスラッシュコマンドをフックにリマインダーやタスクの登録など
botsをワークスペースに追加するとtokenが表示されるので、コピーしておきます。
ライブラリ
Go言語でslackのbotを使うにはslack-go/slackというライブラリを使います。
サンプルコードが用意されているので、試しに使ってみるレベルなので、必要な部分をコピペして、一部書き換えました。
slack/websocket.go at master · slack-go/slack
実際のコードが下のような感じです。
package main
import (
"fmt"
"log"
"os"
"github.com/slack-go/slack"
)
func main() {
config := ReadConfig()
api := slack.New(
config.Token,
slack.OptionDebug(true),
slack.OptionLog(log.New(os.Stdout, "slack-bot: ", log.Lshortfile|log.LstdFlags)),
)
rtm := api.NewRTM()
go rtm.ManageConnection()
for msg := range rtm.IncomingEvents {
fmt.Print("Event Received: ")
switch ev := msg.Data.(type) {
case *slack.DesktopNotificationEvent:
fmt.Printf("Desktop Notification: %v\n", ev)
rtm.SendMessage(rtm.NewOutgoingMessage("なに?", ev.Channel))
case *slack.RTMError:
fmt.Printf("Error: %s\n", ev.Error())
default:
}
}
}
無事に反応してくれました。
簡単に作ることができたので、次はいろいろ機能を追加して友達を作っていきたいです。