def onprivmsg(m)
if(m.action?)
if(m.private?)
irclog "* [#{m.sourcenick}(#{m.sourceaddress})] #{m.message}", m.sourcenick
else
irclog "* #{m.sourcenick} #{m.message}", m.target
end
else
if(m.public?)
irclog "<#{m.sourcenick}> #{m.message}", m.target
else
irclog "[#{m.sourcenick}(#{m.sourceaddress})] #{m.message}", m.sourcenick
end
end
@config['irc.ignore_users'].each { |mask| return if Irc.netmaskmatch(mask,m.source) }
@plugins.delegate "listen", m
if(m.private? && m.message =~ /^\001PING\s+(.+)\001/)
notice m.sourcenick, "\001PING #$1\001"
irclog "@ #{m.sourcenick} pinged me"
return
end
if(m.address?)
delegate_privmsg(m)
case m.message
when (/^join\s+(\S+)\s+(\S+)$/i)
join $1, $2 if(@auth.allow?("join", m.source, m.replyto))
when (/^join\s+(\S+)$/i)
join $1 if(@auth.allow?("join", m.source, m.replyto))
when (/^part$/i)
part m.target if(m.public? && @auth.allow?("join", m.source, m.replyto))
when (/^part\s+(\S+)$/i)
part $1 if(@auth.allow?("join", m.source, m.replyto))
when (/^quit(?:\s+(.*))?$/i)
quit $1 if(@auth.allow?("quit", m.source, m.replyto))
when (/^restart(?:\s+(.*))?$/i)
restart $1 if(@auth.allow?("quit", m.source, m.replyto))
when (/^hide$/i)
join 0 if(@auth.allow?("join", m.source, m.replyto))
when (/^save$/i)
if(@auth.allow?("config", m.source, m.replyto))
save
m.okay
end
when (/^nick\s+(\S+)$/i)
nickchg($1) if(@auth.allow?("nick", m.source, m.replyto))
when (/^say\s+(\S+)\s+(.*)$/i)
say $1, $2 if(@auth.allow?("say", m.source, m.replyto))
when (/^action\s+(\S+)\s+(.*)$/i)
action $1, $2 if(@auth.allow?("say", m.source, m.replyto))
when (/^mode\s+(\S+)\s+(\S+)\s+(.*)$/i)
mode $1, $2, $3 if(@auth.allow?("mode", m.source, m.replyto))
when (/^ping$/i)
say m.replyto, "pong"
when (/^rescan$/i)
if(@auth.allow?("config", m.source, m.replyto))
m.reply "saving ..."
save
m.reply "rescanning ..."
rescan
m.reply "done. #{@plugins.status(true)}"
end
when (/^quiet$/i)
if(auth.allow?("talk", m.source, m.replyto))
m.okay
@channels.each_value {|c| c.quiet = true }
end
when (/^quiet in (\S+)$/i)
where = $1
if(auth.allow?("talk", m.source, m.replyto))
m.okay
where.gsub!(/^here$/, m.target) if m.public?
@channels[where].quiet = true if(@channels.has_key?(where))
end
when (/^talk$/i)
if(auth.allow?("talk", m.source, m.replyto))
@channels.each_value {|c| c.quiet = false }
m.okay
end
when (/^talk in (\S+)$/i)
where = $1
if(auth.allow?("talk", m.source, m.replyto))
where.gsub!(/^here$/, m.target) if m.public?
@channels[where].quiet = false if(@channels.has_key?(where))
m.okay
end
when (/^status\??$/i)
m.reply status if auth.allow?("status", m.source, m.replyto)
when (/^registry stats$/i)
if auth.allow?("config", m.source, m.replyto)
m.reply @registry.stat.inspect
end
when (/^(help\s+)?config(\s+|$)/)
@config.privmsg(m)
when (/^(version)|(introduce yourself)$/i)
say m.replyto, "I'm a v. #{$version} rubybot, (c) Tom Gilbert - http://linuxbrit.co.uk/rbot/"
when (/^help(?:\s+(.*))?$/i)
say m.replyto, help($1)
when (/^(botsnack|ciggie)$/i)
say m.replyto, @lang.get("thanks_X") % m.sourcenick if(m.public?)
say m.replyto, @lang.get("thanks") if(m.private?)
when (/^(hello|howdy|hola|salut|bonjour|sup|niihau|hey|hi(\W|$)|yo(\W|$)).*/i)
say m.replyto, @lang.get("hello_X") % m.sourcenick if(m.public?)
say m.replyto, @lang.get("hello") if(m.private?)
end
else
case m.message
when (/^\s*(hello|howdy|hola|salut|bonjour|sup|niihau|hey|hi|yo(\W|$))[\s,-.]+#{Regexp.escape(@nick)}$/i)
say m.replyto, @lang.get("hello_X") % m.sourcenick
when (/^#{Regexp.escape(@nick)}!*$/)
say m.replyto, @lang.get("hello_X") % m.sourcenick
end
end
end