Skit is a simple tool/library written in Go (or Golang) for building Slack bots.
Skit pre-compiled binary is good enough to build simple slack bots. For more complex
usecases skit can be used as a library as well.
Simply download the pre-built binary for your platform from the Releases section.
Release archive will contain a skit.toml file with some sample handlers
setup. To run this default setup:
- Create a bot on slack by following Documentation
- Set slack token generated for the bot in
skit.toml - Run
skit -c skit.toml - Go to slack and find the bot which you created and chat!
Following skit.toml file can be used to setup a simple slack bot that
passes any message sent to it to a shell script bot.sh. The output of
this script will be sent back as the response.
token = "your-token-here"
log_level = "info"
[[handlers]]
name = "matcha_all"
type = "command"
match = [
".*"
]
cmd = "./bot.sh"
args = [
"{{ .event.Text }}"
]See examples/ for samples of different handler configurations.
Following sample shows how to build a simple bot that echo's everything you say to it!
sk:= skit.New("your-token", logrus.New())
sk.Register("echo_all", skit.SimpleHandler("{{.event.Text}}", ".*"))
sk.Listen(context.Background())A handler is an implementation of skit.Handler interface. A handler is responsible
for consuming event, processing and responding to it when applicable. Currently 3 types
of handlers are available.
-
simplehandler can be used to build simple regex based conversational bot. -
Following sample shows how to configure
simplehandler:[[handlers]] name = "simple_bot" type = "simple" match = [ "my name is (?P<name>.*)" ] message = "Hello there {{ .name }}!"
-
commandhandler can be used to delegate the message handling responsibility to external command -
This allows building bots which are more complex than the ones built with
simple -
Following sample shows how to configure
commandhandler:[[handlers]] name = "external_command" type = "command" match = [ ".*" ] cmd = "./hello.sh" args = [ "{{ .event.Text }}" ] timeout = "5s"
-
luaallows writing handlers using Lua script which will be executed using embedded Gopher-Lua -
Lua code will have access to skit instance and its APIs and can be used build complex bots.
-
You can provide paths to be added to
LUA_PATHaspathsin the following config. -
In the config sample below,
sourcecan be any valid lua code. So you can put your handler code in a file (e.g.,handler.lua) under one of thepathsand usesource="require('handler')"in the handler config. -
Following sample shows how to configure
luahandler:[[handlers]] name = "lua_handler" type = "lua" handler = "handle_event" paths = [] source = """ function handle_event(ctx, sk, event) sk:SendText(ctx, "Hello from Lua!", event.Channel) return true end """