summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2018-01-01 10:32:52 +0100
committerDimitri Sokolyuk <demon@dim13.org>2018-01-01 10:32:52 +0100
commit207b1d560e310d89799584a152b4e1006c75c6ab (patch)
tree6cff34a342fc35c2736ed8ec3318dc501bde71a8
parent224f116df6e581c0c62d0300d47224c14d9510df (diff)
kiss
-rw-r--r--main.go54
1 files 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)