summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-07-21 17:39:50 +0200
committerDimitri Sokolyuk <demon@dim13.org>2015-07-21 17:39:50 +0200
commit6dd926817d0fc77fdeeb5aea0c5ad156d5007c4e (patch)
treea5d1d33643775901f5e9fd974d5d3f0c993177da /main.go
parent21d7bc6362f18e4a02380b5d763ead1d78495bbf (diff)
Split more
Diffstat (limited to 'main.go')
-rw-r--r--main.go56
1 files changed, 5 insertions, 51 deletions
diff --git a/main.go b/main.go
index 9a2922b..b09d1c1 100644
--- a/main.go
+++ b/main.go
@@ -3,8 +3,6 @@ package main
import (
"flag"
"log"
- "sort"
- "strings"
irc "github.com/fluffle/goirc/client"
)
@@ -15,58 +13,14 @@ var (
name = flag.String("name", "dim13", "Bots Name")
)
-func MedianLength(v []string) int {
- if len(v) == 0 {
- return 0
- }
- l := make([]int, len(v))
- for i, s := range v {
- l[i] = len(s)
- }
- sort.Sort(sort.IntSlice(l))
- return l[len(l)/2]
-}
-
func privmsg(conn *irc.Conn, line *irc.Line) {
- f := strings.Fields(line.Text())
-
if line.Public() && line.Nick != conn.Me().Nick {
- buffer.Value = line
- buffer = buffer.Next()
+ Push(line)
Count(line.Nick)
}
-
- // lookup command
- if len(f) > 0 {
- cmd := strings.ToLower(f[0])
- if c, ok := commands[cmd]; ok {
- if c.WithArgs(len(f)) && !(line.Public() && c.Timeout()) {
- log.Println(line.Nick, f)
- go c.Handle(conn, line)
- }
- }
- }
-
- // extract single link and fetch title
- for _, v := range f {
- if strings.HasPrefix(v, "http") {
- go func(url string) {
- log.Println(line.Nick, url)
- t, err := FetchTitle(url)
- if err != nil {
- log.Println(err)
- }
- if t != "" {
- conn.Privmsg(line.Target(), "Title: "+t)
- }
- }(v)
- }
- }
-
- if m := MedianLength(f); len(f) > 4 && m < 2 {
- log.Println("kick", line.Nick)
- conn.Kick(*room, line.Nick, "flood")
- }
+ Dispatch(conn, line)
+ ExtractLinks(conn, line)
+ DetectFlood(conn, line)
}
func init() {
@@ -91,7 +45,7 @@ func main() {
log.Fatal(err)
}
- go autoSave()
+ go AutoSave()
<-quit
}