Goのslackbotを改良したのと、プラグイン増やしたので紹介
以前のGoCon 2015 SummerでLTしたkyokomi/slackbotですが、 かなりリニューアルしたので、改めて紹介しようかと思います。
大きな変更点
- x/net/contextの依存をやめた
- 魔法みたいになんでも出てくる感じで分かりづらかったので
- importするだけの実装をやめた
- importする順番をきにしたり、魔法っぽい感じがわかりずらかったので
- プラグインに
help() string
メソッドの実装を強制した- systemコマンドっぽいのでhelpをまとめて出せるようにしたかった
実装例はこんな感じ。
package main import ( "flag" "net/http" "os" "github.com/kyokomi/slackbot" "github.com/kyokomi/slackbot/plugins" "github.com/kyokomi/slackbot/plugins/echo" ) func main() { var token string flag.StringVar(&token, "token", os.Getenv("SLACK_BOT_TOKEN"), "SlackのBotToken") flag.Parse() bot, err := slackbot.NewBotContext(token) if err != nil { panic(err) } // pluginを追加する bot.AddPlugin("echo", echo.NewPlugin()) // joinしてる部屋全部のeventが来るので注意 bot.Run(func(event plugins.BotEvent) { if event.ChannelName() == "#general" { event.Reply("起きた") } }) // herokuとかで起動する用 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("OK")) }) http.ListenAndServe(":8000", nil) }
追加したプラグイン
sysstdプラグイン
- システム系のプラグイン。基本的にbotContext作るときに強制的にAddPluginしてる
- Timezone周りの設定や、help表示、linux commandの実行などができる
<@bot_name> <command>
でcommandの所には、help
とかtimezone
とかcommand ls -al
とか入力する
コハエース画像プラグイン
koha
というキーワードで雑に反応する- 経験値先生が放出したLINEスタンプになるはずだった画像を表示する
- 先月のブログで雑に紹介済みなので割愛
google画像プラグイン
あかりプラグイン
<キーワード> 大好き
に反応して、わぁいxxxx あかりxxxx大好き
をする