func runBot(bot victor.Robot) {
	defer func() {
		if e := recover(); e != nil {
			fmt.Println("bot.Stop() exited with panic: ", e)
			os.Exit(0)
		}
	}()
	bot.Run()
	go monitorErrors(bot.ChatErrors())
	go monitorEvents(bot.ChatEvents())
	sigs := make(chan os.Signal, 1)
	signal.Notify(sigs, os.Interrupt)
	<-sigs
	bot.Stop()
}
run and recover from panic during bot.Stop()
the upstream slack adapter has not implemented bot.Stop() yet
package main
import (
	"flag"
	"fmt"
	"log"
	"os"
	"os/signal"
	"github.com/FogCreek/victor"
	"github.com/FogCreek/victor/pkg/chat/slackRealtime"
	"github.com/FogCreek/victor/pkg/events"
	"github.com/groob/radigast"
)
var fConfig = flag.String("config", "", "configuration file to load")
var fVersion = flag.Bool("version", false, "display the version")
var Version = "unreleased"
func main() {
	flag.Parse()
	if *fVersion {
		fmt.Printf("Radigast Slack Bot - Version %s\n", Version)
		return
	}
	var (
		config *radigast.Config
		err    error
	)
	if *fConfig != "" {
		config, err = radigast.LoadConfig(*fConfig)
		if err != nil {
			log.Fatal(err)
		}
	} else {
		log.Fatal("No config file specified.")
	}
	bot := victor.New(victor.Config{
		ChatAdapter:   "slackRealtime",
		AdapterConfig: slackRealtime.NewConfig(config.SlackToken),
		Name:          config.BotName,
	})
	config.LoadPlugins(bot)
	bot.EnableHelpCommand()
	runBot(bot)
}