summaryrefslogtreecommitdiff
path: root/flood.go
blob: 198ee3b21e47114faf93965cf2967a448c93c133 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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) > 8 {
		if m := MedianLength(f); m < 2 {
			log.Println("kick", line.Nick)
			conn.Kick(*room, line.Nick, "flood")
		}
	}
}