def irc_send_penalty
penalty = 1 + self.size/100
cmd, pars = self.split($;,2)
debug "cmd: #{cmd}, pars: #{pars.inspect}"
case cmd.to_sym
when :KICK
chan, nick, msg = pars.split
chan = chan.split(',')
nick = nick.split(',')
penalty += nick.size
penalty *= chan.size
when :MODE
chan, modes, argument = pars.split
extra = 0
if modes
extra = 1
if argument
extra += modes.split(/\+|-/).size
else
extra += 3 * modes.split(/\+|-/).size
end
end
if argument
extra += 2 * argument.split.size
end
penalty += extra * chan.split.size
when :TOPIC
penalty += 1
penalty += 2 unless pars.split.size < 2
when :PRIVMSG, :NOTICE
dests = pars.split($;,2).first
penalty += dests.split(',').size
when :WHO
penalty += 5
when :AWAY, :JOIN, :VERSION, :TIME, :TRACE, :WHOIS, :DNS
penalty += 2
when :INVITE, :NICK
penalty += 3
when :ISON
penalty += 1
else
penalty += 1
end
if penalty > 99
debug "Wow, more than 99 secs of penalty!"
penalty = 99
end
if penalty < 2
debug "Wow, less than 2 secs of penalty!"
penalty = 2
end
debug "penalty: #{penalty}"
return penalty
end