package main import ( "io" "dim13.org/bot/internal/flood" "dim13.org/bot/internal/href" "dim13.org/bot/internal/re" irc "github.com/fluffle/goirc/client" ) type Room struct { titles *href.Titles flood *flood.Checker re *re.RE } type KickWriter interface { io.Writer flood.Kicker } func newRoom(w KickWriter) *Room { return &Room{ titles: href.NewTitles(w), flood: flood.New(w), re: re.NewRE(w), } } func (r *Room) Handle(conn *irc.Conn, line *irc.Line) { text, nick := line.Text(), line.Nick // ignore self if nick == conn.Me().Nick { return } r.flood.Check(text, nick) r.titles.Resolve(text) r.re.Replace(text, nick) }