👌

slack-goに入門する

2023/06/19に公開

Goと仲良くなる必要性が生じて、ぼちぼち勉強している。他の言語に比べてREST APIを叩くのが妙にめんどくさい気がするが、C言語をパワーアップさせた言語ということなので仕方ないのだろう(?)

言語と仲良くなるにはとりあえずSlack Appを作るのが一番(わたしの場合は)。
しかしAPI叩くの面倒だしなあと思ってたら、slack-goなるライブラリが存在することを知ってちょっと試してみた。

インストール方法

以下のコマンドを実行して、インストールする。
わたしはいま、go getなるコマンドを雰囲気で使っている。これで依存パッケージのダウンロードとインストールができるらしい。

go get -u github.com/slack-go/slack

使い方

GitHubのリポジトリに信じられない量のサンプルコードがある。そうしたサンプルコードをほぼ丸写ししながら、Slackといえばメッセージということで以下のコードを書いた。

package main

import (
	"fmt"

	"github.com/slack-go/slack"
)

func main() {
	api := slack.New("わたしのトークン")
	
	channelID, timestamp, err := api.PostMessage("xxxxx(わたしのslackのtimeline)", slack.MsgOptionText("Hello World!", false))
	if err != nil {
		fmt.Printf("%s\n", err)
		return
	}
	fmt.Printf("Message successfully sent to channel %s at %s", channelID, timestamp)
}

えいっ!

go run main.go

ちょっとドキドキしながらSlackを見にいくと、ちゃんとPostされていた。
うれしい!こんにちは世界!わたしが王だ!!

これまでSlack BotはほとんどGASで作ってしまっていたが、諸事情によりGoと仲良くなる必要性が生じてしまったので、毒はくらわばということでしばらくGoで色々やってみようと思う。ポインタがむずい。

Discussion