# NickServ identifer plugin # Version 0.1 # Released under GNU GPL v2 # PhoeniX def weechat_init Weechat.register "nickserv", "0.1", "deinit", "NickServ identifer plugin." Weechat.add_command_handler "nickserv", "nickserv","","a|d|l|u|help", "", "a|d|l|u|help" Weechat.add_message_handler "notice", "on_notice" #initialize rules $ruleset=Array.new i=0 while !(rule_str=Weechat.get_plugin_config("rule"+i.to_s)).empty? a rule_str.split(' ') i+=1 end return Weechat::PLUGIN_RC_OK end def on_notice(server, args) #get mask, nick and messae from notice mask=args.split(':')[1].split(' ')[0] nick=args.split(':')[1].split(' ')[2] message=args.split(':')[2] #find matching rule and execute action $ruleset\ .find_all{|row| !(mask=~Regexp.new(row[:mask])).nil?}\ .find_all{|row| !(nick=~Regexp.new(row[:nick])).nil?}\ .find_all{|row| !(message=~Regexp.new(row[:message])).nil?}\ .each{|row| Weechat.command row[:action]} return Weechat::PLUGIN_RC_OK end #add def a(argv) if argv.size<3 help return nil end $ruleset.push({:mask => argv.shift , :message => argv.shift, :nick => argv.shift , :action => argv*' '}) end #list def l(argv) $ruleset.each_index{|i| Weechat.print_server "#{i}\t| #{$ruleset[i][:mask]} #{$ruleset[i][:message]} #{$ruleset[i][:nick]} #{$ruleset[i][:action]}"} end #delete def d(argv) if(argv.size==1) $ruleset.delete_at(argv[0].to_s) else help end end #update def u(argv) if argv.size<4 help return nil end index=argv.shift.to_i $ruleset[index]={:mask => argv.shift , :message => argv.shift, :nick => argv.shift , :action => argv*' '} end def help(argv) helpmessage=<