mirror of https://github.com/fluffle/goirc
(de)op, (de)hop, kick
This commit is contained in:
parent
c97201c671
commit
32a32cda35
2
auth.go
2
auth.go
|
@ -131,7 +131,7 @@ func hasAccess(conn *irc.Conn, nick *irc.Nick, target, args, flag string) (strin
|
|||
if err != nil {
|
||||
return "", args
|
||||
}
|
||||
if strings.Index(flags, flag) > -1 {
|
||||
if flag == "" || strings.IndexAny(flags, flag) > -1 {
|
||||
return channel, args
|
||||
}
|
||||
return "", args
|
||||
|
|
96
handler.go
96
handler.go
|
@ -21,6 +21,15 @@ var commands = map [string]func(*irc.Conn, *irc.Nick, string, string) {
|
|||
"topic": topic,
|
||||
"appendtopic": appendtopic,
|
||||
"say": csay,
|
||||
|
||||
"halfop": halfop,
|
||||
"hop": halfop,
|
||||
"op": op,
|
||||
"deop": deop,
|
||||
"dehalfop": dehalfop,
|
||||
"dehop": dehalfop,
|
||||
"kick": kick,
|
||||
"k": kick,
|
||||
}
|
||||
|
||||
const googleAPIKey = "ABQIAAAA6-N_jl4ETgtMf2M52JJ_WRQjQjNunkAJHIhTdFoxe8Di7fkkYhRRcys7ZxNbH3MIy_MKKcEO4-9_Ag"
|
||||
|
@ -334,3 +343,90 @@ func csay(conn *irc.Conn, nick *irc.Nick, args, target string) {
|
|||
say(conn, channel, args)
|
||||
}
|
||||
}
|
||||
|
||||
func op(conn *irc.Conn, nick *irc.Nick, args, target string) {
|
||||
channel, args := hasAccess(conn, nick, target, args, "o")
|
||||
if channel == "" {
|
||||
return
|
||||
}
|
||||
|
||||
if args == "" {
|
||||
conn.Mode(channel, "+o " + nick.Nick)
|
||||
} else {
|
||||
ops := strings.TrimSpace(args)
|
||||
count := strings.Count(ops, " ") + 1
|
||||
modestring := "+" + strings.Repeat("o", count) + " " + ops
|
||||
conn.Mode(channel, modestring)
|
||||
}
|
||||
}
|
||||
|
||||
func deop(conn *irc.Conn, nick *irc.Nick, args, target string) {
|
||||
channel, args := hasAccess(conn, nick, target, args, "o")
|
||||
if channel == "" {
|
||||
return
|
||||
}
|
||||
|
||||
if args == "" {
|
||||
conn.Mode(channel, "-o " + nick.Nick)
|
||||
} else {
|
||||
ops := strings.TrimSpace(args)
|
||||
count := strings.Count(ops, " ") + 1
|
||||
modestring := "-" + strings.Repeat("o", count) + " " + ops
|
||||
conn.Mode(channel, modestring)
|
||||
}
|
||||
}
|
||||
|
||||
func halfop(conn *irc.Conn, nick *irc.Nick, args, target string) {
|
||||
channel, args := hasAccess(conn, nick, target, args, "oh")
|
||||
if channel == "" {
|
||||
return
|
||||
}
|
||||
|
||||
if args == "" {
|
||||
conn.Mode(channel, "+h " + nick.Nick)
|
||||
} else {
|
||||
// giving others +h requires o
|
||||
channel, args = hasAccess(conn, nick, channel, args, "o")
|
||||
if channel == "" {
|
||||
return
|
||||
}
|
||||
halfops := strings.TrimSpace(args)
|
||||
count := strings.Count(halfops, " ") + 1
|
||||
modestring := "+" + strings.Repeat("h", count) + " " + halfops
|
||||
conn.Mode(channel, modestring)
|
||||
}
|
||||
}
|
||||
|
||||
func dehalfop(conn *irc.Conn, nick *irc.Nick, args, target string) {
|
||||
channel, args := hasAccess(conn, nick, target, args, "oh")
|
||||
if channel == "" {
|
||||
return
|
||||
}
|
||||
|
||||
if args == "" {
|
||||
conn.Mode(channel, "-h " + nick.Nick)
|
||||
} else {
|
||||
channel, args = hasAccess(conn, nick, channel, args, "o")
|
||||
if channel == "" {
|
||||
return
|
||||
}
|
||||
halfops := strings.TrimSpace(args)
|
||||
count := strings.Count(halfops, " ") + 1
|
||||
modestring := "-" + strings.Repeat("h", count) + " " + halfops
|
||||
conn.Mode(channel, modestring)
|
||||
}
|
||||
}
|
||||
|
||||
func kick(conn *irc.Conn, nick *irc.Nick, args, target string) {
|
||||
channel, args := hasAccess(conn, nick, target, args, "oh")
|
||||
if channel == "" || args == "" {
|
||||
return
|
||||
}
|
||||
|
||||
split := strings.Split(args, " ", 2)
|
||||
reason := "(" + nick.Nick + ")"
|
||||
if len(split) == 2 {
|
||||
reason += " " + split[1]
|
||||
}
|
||||
conn.Kick(channel, split[0], reason)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue