X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Fautoop.rb;h=a47375ca69d00e6ae5ccf096d07a4b1f961fdfa0;hb=facc2af8233f691d022742f8ba5b96625c4b55cb;hp=6187cf4dd3dfc3d793c3531c8274f9d290c2244c;hpb=b7572e688c0d44b3632b6077a3e7a936af733568;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/autoop.rb b/data/rbot/plugins/autoop.rb index 6187cf4d..a47375ca 100644 --- a/data/rbot/plugins/autoop.rb +++ b/data/rbot/plugins/autoop.rb @@ -1,19 +1,37 @@ class AutoOP < Plugin def help(plugin, topic="") - "perform autoop based on hostmask - usage: addop [channel channel ...], rmop [channel], list - list current ops. If you don't specify which channels, all channels are assumed" + "perform autoop based on hostmask - usage: add [channel channel ...], rm [channel], list - list current ops. If you don't specify which channels, all channels are assumed" end def join(m) return if m.address? @registry.each { |mask,channels| - if(Irc.netmaskmatch(mask, m.source) && - (channels.empty? || channels.include?(m.channel))) - @bot.mode(m.channel, "+o", m.sourcenick) + if m.source.matches?(mask.to_irc_netmask(:server => m.server)) && + (channels.empty? || channels.include?(m.channel.to_s)) + @bot.mode(m.channel, "+o", m.source.nick) return end } end + def nick(m) + return if m.address? + is_on = m.server.channels.inject(ChannelList.new) { |list, ch| + list << ch if ch.users.include?(m.source) + list + } + is_on.each { |channel| + ch = channel.to_s + @registry.each { |mask,channels| + if m.source.matches?(mask.to_irc_netmask(:server => m.server)) && + (channels.empty? || channels.include?(ch)) + @bot.mode(ch, "+o", m.source.nick) + return + end + } + } + end + def add(m, params) @registry[params[:mask]] = params[:channels].dup m.okay