From 207b1d560e310d89799584a152b4e1006c75c6ab Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 1 Jan 2018 10:32:52 +0100 Subject: kiss --- main.go | 54 +++++++++++++++--------------------------------------- 1 file changed, 15 insertions(+), 39 deletions(-) diff --git a/main.go b/main.go index a4c2f73..8d142ce 100644 --- a/main.go +++ b/main.go @@ -23,47 +23,26 @@ func notify(conn *irc.Conn, target string) chan string { return c } -func linker(out chan string) chan string { - c := make(chan string, 1) - go func() { - for l := range c { - for _, v := range getLinks(l) { +func privmsg(room string) irc.HandlerFunc { + return func(conn *irc.Conn, line *irc.Line) { + switch t := line.Text(); { + case isFlood(t): + if line.Nick != conn.Me().Nick { + log.Println("kick", line.Nick) + conn.Kick(room, line.Nick) + } + default: + for _, v := range getLinks(t) { log.Println("URL", v) - t, err := getTitle(v) + title, err := getTitle(v) if err != nil { log.Println(err) } - if t != "" { - out <- fmt.Sprintf("Title: %v", t) + if title != "" { + conn.Notice(line.Target(), fmt.Sprintf("Title: %v", t)) } } } - }() - return c -} - -func kicker(conn *irc.Conn, channel string) chan string { - c := make(chan string, 1) - go func() { - for nick := range c { - if nick != conn.Me().Nick { - log.Println("kick", nick) - conn.Kick(channel, nick) - } - } - }() - return c -} - -func privmsg(note, kick chan string) irc.HandlerFunc { - links := linker(note) - return func(conn *irc.Conn, line *irc.Line) { - switch t := line.Text(); { - case isFlood(t): - kick <- line.Nick - default: - links <- t - } } } @@ -79,9 +58,6 @@ func main() { conf.SSL = *ssl conn := irc.Client(conf) - note := notify(conn, *room) - kick := kicker(conn, *room) - done := make(chan struct{}) conn.HandleFunc(irc.DISCONNECTED, func(_ *irc.Conn, _ *irc.Line) { @@ -90,10 +66,10 @@ func main() { conn.HandleFunc(irc.CONNECTED, func(conn *irc.Conn, _ *irc.Line) { conn.Join(*room) - go Watch(note, Feeds) + go Watch(notify(conn, *room), Feeds) }) - conn.HandleFunc(irc.PRIVMSG, privmsg(note, kick)) + conn.HandleFunc(irc.PRIVMSG, privmsg(*room)) conn.HandleFunc(irc.KICK, func(conn *irc.Conn, _ *irc.Line) { conn.Join(*room) -- cgit v1.2.3