next\r
end\r
bans.delete(ar)\r
- chan = ar[1]\r
+ chan = ar[1].downcase\r
regexp = make_badword_rx(ar[2])\r
badwords << BadWordAction.new(regexp, action, chan, "0s", "")\r
}\r
\r
m.okay\r
rescue\r
+ error $!\r
m.reply $!\r
end\r
end\r
autos = @registry[:onjoin]\r
count = autos.length\r
\r
- idx = params[:idx].to_i\r
+ idx = nil\r
+ idx = params[:idx].to_i if params[:idx]\r
\r
if idx\r
if idx > count\r
autos.delete rule if rule.host == host\r
}\r
rescue\r
+ error $!\r
m.reply $!\r
end\r
end\r
@registry[:onjoin] = autos\r
- m.okay if count > autos.length\r
+ if count > autos.length\r
+ m.okay\r
+ else\r
+ m.reply "No matching onjoin rule for #{host} found"\r
+ end\r
end\r
\r
def add_badword(m, params=nil)\r
- regexp, channel = make_badword_rx(params[:regexp]), params[:channel].dup\r
+ regexp, channel = make_badword_rx(params[:regexp]), params[:channel].downcase.dup\r
action, timer, reason = params[:action], params[:timer].dup, params[:reason].to_s\r
\r
badwords = @registry[:badwords]\r
badwords = @registry[:badwords]\r
count = badwords.length\r
\r
- idx = params[:idx].to_i\r
+ idx = nil\r
+ idx = params[:idx].to_i if params[:idx]\r
\r
if idx\r
if idx > count\r
\r
badwords.each { |badword|\r
next unless ['all', badword.channel].include?(channel)\r
+ debug "Removing #{badword.inspect}" if badword == regexp\r
badwords.delete(badword) if badword == regexp\r
}\r
end\r
\r
@registry[:badwords] = badwords\r
- m.okay if count > badwords.length\r
+ if count > badwords.length\r
+ m.okay\r
+ else\r
+ m.reply "No matching badword #{regexp} found"\r
+ end\r
end\r
\r
def add_whitelist(m, params=nil)\r
\r
m.okay\r
rescue\r
+ error $!\r
m.reply $!\r
end\r
end\r
wl = @registry[:whitelist]\r
count = wl.length\r
\r
- idx = params[:idx].to_i\r
+ idx = nil\r
+ idx = params[:idx].to_i if params[:idx]\r
\r
if idx\r
if idx > count\r
wl.delete rule if rule.host == host\r
}\r
rescue\r
+ error $!\r
m.reply $!\r
end\r
end\r
@registry[:whitelist] = wl\r
- m.okay if count > whitelist.length\r
+ if count > whitelist.length\r
+ m.okay\r
+ else\r
+ m.reply "No host matching #{host}"\r
+ end\r
end\r
\r
private\r
def check_channel(m, strchannel)\r
begin\r
- raise "must specify channel if using privmsg" if strchannel.empty? and m.private?\r
- channel = strchannel.empty? ? m.target : m.server.channel(strchannel)\r
- raise "I am not in that channel" unless channel.has_user?(@bot)\r
+ raise "must specify channel if using privmsg" if m.private? and not strchannel\r
+ channel = m.server.channel(strchannel) || m.target\r
+ raise "I am not in that channel" unless channel.has_user?(@bot.nick)\r
\r
return channel\r
rescue\r
+ error $!\r
m.reply $!\r
end\r
end\r
\r
- def do_cmd(action, nick, channel, timer="0s", reason="")\r
- if timer.eql? "0s"\r
+ def do_cmd(action, nick, channel, timer_in=nil, reason=nil)\r
+ case timer_in\r
+ when nil\r
timer = 0\r
+ when /^(\d+)s$/\r
+ timer = $1.to_i\r
+ when /^(\d+)m$/\r
+ timer = $1.to_i * 60\r
+ when /^(\d+)h$/\r
+ timer = $1.to_i * 60 * 60 \r
+ when /^(\d+)d$/\r
+ timer = $1.to_i * 60 * 60 * 24\r
else\r
- timer = $1.to_i if timer =~ /^(\d+)s$/\r
- timer = $1.to_i * 60 if timer =~ /^(\d+)m$/\r
- timer = $1.to_i * 60 * 60 if timer =~ /^(\d+)h$/\r
- timer = $1.to_i * 60 * 60 * 24 if timer =~ /^(\d+)d$/\r
+ raise "Wrong time specifications"\r
end\r
\r
case action\r
\r
plugin.map 'ban :nick :timer :channel', :action => 'ban_user',\r
:requirements => {:timer => BansPlugin::TimerRe, :channel => BansPlugin::ChannelRe},\r
- :defaults => {:timer => '0s', :channel => ''},\r
+ :defaults => {:timer => nil, :channel => nil},\r
:auth_path => 'act'\r
plugin.map 'unban :nick :channel', :action => 'unban_user',\r
:requirements => {:channel => BansPlugin::ChannelRe},\r
- :defaults => {:channel => ''},\r
+ :defaults => {:channel => nil},\r
:auth_path => 'act'\r
plugin.map 'kick :nick :channel *reason', :action => 'kick_user',\r
:requirements => {:channel => BansPlugin::ChannelRe},\r
- :defaults => {:channel => '', :reason => ''},\r
+ :defaults => {:channel => nil, :reason => 'requested'},\r
:auth_path => 'act'\r
plugin.map 'kickban :nick :timer :channel *reason', :action => 'kickban_user',\r
:requirements => {:timer => BansPlugin::TimerRe, :channel => BansPlugin::ChannelRe},\r
- :defaults => {:timer => '0s', :channel => '', :reason => ''},\r
+ :defaults => {:timer => nil, :channel => nil, :reason => 'requested'},\r
:auth_path => 'act'\r
plugin.map 'silence :nick :timer :channel', :action => 'silence_user',\r
:requirements => {:timer => BansPlugin::TimerRe, :channel => BansPlugin::ChannelRe},\r
- :defaults => {:timer => '0s', :channel => ''},\r
+ :defaults => {:timer => nil, :channel => nil},\r
:auth_path => 'act'\r
plugin.map 'unsilence :nick :channel', :action => 'unsilence_user',\r
:requirements => {:channel => BansPlugin::ChannelRe},\r
- :defaults => {:channel => ''},\r
+ :defaults => {:channel => nil},\r
:auth_path => 'act'\r
\r
plugin.map 'bans add onjoin :host :action :channel *reason', :action => 'add_onjoin',\r