Some commands for sarah.

package main

import (
    "context"
    _ "github.com/oklahomer/go-sarah-commands/giphy"
    _ "github.com/oklahomer/go-sarah-commands/goproverbs"
    _ "github.com/oklahomer/go-sarah-commands/pick"
    _ "github.com/oklahomer/go-sarah-commands/randomuser"
    _ "github.com/oklahomer/go-sarah-commands/urlextractor"
    "github.com/oklahomer/go-sarah/v2"
    "github.com/oklahomer/go-sarah/v2/log"
    "github.com/oklahomer/go-sarah/v2/slack"
    "gopkg.in/yaml.v2"
    "io/ioutil"
    "os"
    "os/signal"
    "syscall"
)

func main() {
    // Setup Bot
    configBuf, _ := ioutil.ReadFile("/path/to/adapter/config.yaml")
    slackConfig := slack.NewConfig()
    yaml.Unmarshal(configBuf, slackConfig)
    adapter, _ := slack.NewAdapter(slackConfig)
    storage := sarah.NewUserContextStorage(sarah.NewCacheConfig())
    slackBot, _ := sarah.NewBot(adapter, sarah.BotWithStorage(storage))
    sarah.RegisterBot(slackBot)

    // Start interaction
    rootCtx := context.Background()
    runnerCtx, cancel := context.WithCancel(rootCtx)
    err := sarah.Run(runnerCtx, sarah.NewConfig())
    if err!= nil {
        panic(err)
    }

    // Wait till signal is sent
	c := make(chan os.Signal, 1)
	signal.Notify(c, os.Interrupt)
	signal.Notify(c, syscall.SIGTERM)
	select {
	case <-c:
		log.Info("Stopping due to signal reception.")
		cancel()

	}
}