package main import ( "log" "math/rand" "time" irc "github.com/fluffle/goirc/client" ) type RR struct{ Command } const barrel = 6 var ( bullet int loaded int played string ) func reload() { bullet = 0 loaded = rand.Intn(barrel) played = "" } func trigger() bool { defer func() { bullet++ bullet %= barrel }() return bullet == loaded } func (_ RR) Timeout(_ string) bool { return false } func (_ RR) Handle(conn *irc.Conn, line *irc.Line) { if !line.Public() { return } log.Println(line.Nick, bullet, loaded) if played == line.Nick { conn.Notice(*room, line.Nick+", not your turn") return } played = line.Nick if trigger() { conn.Kick(*room, line.Nick, "bang!") conn.Notice(*room, "reload") reload() } } func (_ RR) Help() string { return "Russian roulette" } func init() { rand.Seed(time.Now().UnixNano()) reload() Register("ку", &RR{}) }