--[[ cmd_unban.lua v0.05 by blastbeat - this script adds a command "unban" to unban users by ip/nick/cid - usage: [+!#]unban ip|nick|cid || - changelog 0.05: - updated script api - regged hubcommand - changelog 0.04: - some clean ups, added language file, ucmds - changelog 0.03: - updated script api - changelog 0.02: - added level checking ]]-- --// settings begin //-- local scriptname = "cmd_unban" local scriptversion = "0.05" local permission = { --// [ user_level = level means user_level can unban users banned by level //-- [ 60 ] = 60, -- operator can unban users banned by operators [ 70 ] = 70, -- supervisor can unban users banned by supervisors [ 80 ] = 80, -- admin can unban users banned by admins [ 100 ] = 100, -- hubowner can unban all } local minlevel = 60 local report = true -- send status report? local llevel = 60 -- minimum level to get a report local cmd = "unban" --// settings end //-- local utf_match = utf.match local opchat local bans local path local report_send local scriptlang = cfg.get "language" local lang, err = cfg.loadlanguage( scriptlang, scriptname ); lang = lang or { }; err = err and hub.debug( err ) local msg_denied = lang.msg_denied or "You are not allowed to use this command." local msg_import = lang.msg_import or "Error while importing additional module." local msg_usage = lang.msg_usage or "Usage: [+!#]unban ip|nick|cid ||" local msg_off = lang.msg_off or "User not found." local msg_god = lang.msg_god or "You are not allowed to unban this user." local msg_ok = lang.msg_ok or "User %s removed ban of %s." local help_title = lang.help_title or "unban" local help_usage = lang.help_usage or "[+!#]unban ip|nick|cid ||" local help_desc = lang.help_desc or "unbans user by IP or nick or CID" local ucmd_menu_ct1_1 = lang.ucmd_menu_ct1_1 or { "Unban user", "by IP" } local ucmd_menu_ct1_2 = lang.ucmd_menu_ct1_2 or { "Unban user", "by CID" } local ucmd_menu_ct1_3 = lang.ucmd_menu_ct1_3 or { "Unban user", "by nick" } local ucmd_ip = lang.ucmd_ip or "IP:" local ucmd_cid = lang.ucmd_cid or "CID:" local ucmd_nick = lang.ucmd_nick or "Nick:" local hubcmd local onbmsg = function( user, command, parameters ) local user_level = user:level( ) if not permission[ user_level ] then user:reply( msg_denied, hub.getbot( ) ) return PROCESSED end local by, id = utf.match( parameters, "^(%S+) (%S+)" ) if not ( (by == "sid" or by == "nick" or by == "cid" ) and id ) then user:reply( msg_usage, hub.getbot( ) ) return PROCESSED end for i, ban_tbl in ipairs( bans ) do if ban_tbl[ by ] == id then if permission[ user_level ] < ( ban_tbl.by_level or 100 ) then user:reply( msg_god, hub.getbot( ) ) return PROCESSED end table.remove( bans, i ) util.savearray( bans, path ) local user_nick = hub.escapefrom( user:nick( ) ) local status_message = utf.format( msg_ok, user_nick, id ) local _ = report and report_send( status_message, llevel, nil, hub.getbot( ), hub.getbot( ) ) user:reply( status_message, hub.getbot( ) ) return PROCESSED end end user:reply( msg_off, hub.getbot( ) ) return PROCESSED end hub.setlistener( "onStart", { }, function( ) local ban = hub.import "cmd_ban" if not ban then error( msg_import ) end bans = ban.bans path = ban.bans_path local etc_report = hub.import "etc_report" -- import the report tool if not etc_report and report then error( msg_import ) else report_send = etc_report.send end local help = hub.import "cmd_help" if help then help.reg( help_title, help_usage, help_desc, minlevel ) -- reg help end local ucmd = hub.import "etc_usercommands" -- add usercommand if ucmd then ucmd.add( ucmd_menu_ct1_1, cmd, { "ip", "%[line:" .. ucmd_ip .. "]" }, { "CT1" }, minlevel ) ucmd.add( ucmd_menu_ct1_2, cmd, { "cid", "%[line:" .. ucmd_cid .. "]" }, { "CT1" }, minlevel ) ucmd.add( ucmd_menu_ct1_3, cmd, { "nick", "%[line:" .. ucmd_nick .. "]" }, { "CT1" }, minlevel ) end hubcmd = hub.import "etc_hubcommands" -- add hubcommand assert( hubcmd ) assert( hubcmd.add( cmd, onbmsg ) ) return nil end ) hub.debug( "** Loaded "..scriptname.." "..scriptversion.." **" )