summaryrefslogtreecommitdiff
path: root/flood.go
diff options
context:
space:
mode:
Diffstat (limited to 'flood.go')
-rw-r--r--flood.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/flood.go b/flood.go
new file mode 100644
index 0000000..8fdcc05
--- /dev/null
+++ b/flood.go
@@ -0,0 +1,30 @@
+package main
+
+import (
+ "log"
+ "sort"
+ "strings"
+
+ irc "github.com/fluffle/goirc/client"
+)
+
+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 DetectFlood(conn *irc.Conn, line *irc.Line) {
+ if f := strings.Fields(line.Text()); len(f) > 4 {
+ if m := MedianLength(f); m < 2 {
+ log.Println("kick", line.Nick)
+ conn.Kick(*room, line.Nick, "flood")
+ }
+ }
+}