tizen.moe

tizen.moe

slack用のbotを作った

github.com

実際に運用してるやつはもうチョット反応を沢山入れてあるのですが感じ悪いので必要機能だけ取り上げたリポジトリです。。。*1

実質難しいところはGitHub - nlopes/slack: Slack API in Goに頼ってるのでやってることは塩っぱいことしか無いのですが・・・。

  9 func EventLoop(api *slack.Client, rtm *slack.RTM) int {
 10     for {
 11         select {
 12         case msg := <-rtm.IncomingEvents:
 13             switch ev := msg.Data.(type) {
 14             case *slack.HelloEvent:
 15                 Hello(api, rtm, ev)
 16
 17             case *slack.UserTypingEvent:
 18                 UserTyping(api, rtm, ev)
 19
 20             case *slack.PresenceChangeEvent:
 21                 PresenceChange(api, rtm, ev)
 22
 23             case *slack.MessageEvent:
 24                 Message(api, rtm, ev)
 25
 26             case *slack.InvalidAuthEvent:
 27                 log.Println("Invalid credentials")
 28                 return 1
 29             }
 30         }
 31     }
 32     return 0
 33 }

最近のマイブームで部分的に処理を切り分けてイベントドリブンで処理させてはいます。必要ないので今回はシングルスレッドですがgolangは並列処理書くのが超ラクなのだけが嬉しい。

(※ Qiitaの記事を参考に書いたので↑は殆どそのオリジナルから引用に近いコードのような気がするのですがオリジナル記事はどれを参照したのかがわからなくなりました。。。)

*1:間違えてpublic repositoryにtoken上げたら速攻でslackさんからtokenを無効化された。slackさんスバラシイ