--[[ cmd_setpas.lua v0.03 by blastbeat - this script adds a command "setpas" to set or change a password of an users by sid/nick/cid - usage: [+!#]setpas sid|nick|cid || - [+!#]setpas sets your own pasword - changelog 0.03: by pulsar - fixed bug: user can change her own password now - changelog 0.02: - updated script api - regged hubcommand ]]-- --// settings begin //-- local scriptname = "cmd_setpas" local scriptversion = "0.03" local minlevel = cfg.get "reg_level" or 20 -- minimum level to use this command local permission = { --// [ user_level = level means user_level can setpas of users with level max //-- [ 100 ] = 100, -- hubowner can set passwords of all } local cmd = "setpas" --// settings end //-- local utf_match = utf.match local hub_getbot = hub.getbot local hub_issidonline = hub.issidonline local hub_iscidonline = hub.iscidonline local hub_isnickonline = hub.isnickonline 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_usage = lang.msg_usage or "Usage: [+!#]setpas sid|nick|cid || " local msg_off = lang.msg_off or "User not found." local msg_god = lang.msg_god or "You cannot set passwords of gods." local msg_reg = lang.msg_reg or "User is not regged or a bot." local msg_ok = lang.msg_ok or "Password was changed to: " local help_title = lang.help_title or "setpas" local help_usage = lang.help_usage or "[+!#]setpas sid|nick|cid || " local help_desc = lang.help_desc or "sets password of user; [+!#]setpas sets your own pasword" local ucmd_menu_ct1 = lang.ucmd_menu_ct1 or { "Change your pass" } local ucmd_menu_ct2 = lang.ucmd_menu_ct2 or { "Set password" } local ucmd_pass = lang.ucmd_pass or "Password:" local hubcmd local onbmsg = function( user, command, parameters ) if not user:isregged( ) then user:reply( msg_denied, hub_getbot( ) ) return PROCESSED end local level = user:level( ) local pass1 = utf_match( parameters, "^(%S+)$" ) local by, id, pass2 = utf_match( parameters, "^(%S+) (%S+) (%S+)$" ) if not ( pass1 or ( pass2 and ( by == "sid" or by == "nick" or by == "cid" ) ) ) then user:reply( msg_usage, hub_getbot( ) ) return PROCESSED end local target = ( pass1 and user ) or ( by == "nick" and hub_isnickonline( id ) ) or ( by == "sid" and hub_issidonline( id ) ) or ( by == "cid" and hub_iscidonline( id ) ) if not target then user:reply( msg_off, hub_getbot( ) ) return PROCESSED end if not ( pass1 or target:isregged( ) ) or target:isbot( ) then user:reply( msg_reg, hub_getbot( ) ) return PROCESSED end local pass = pass1 or pass2 if user:isregged( ) then if user:nick() == target:nick() then target:setpassword( pass ) user:reply( msg_ok .. pass, hub_getbot( ) ) return PROCESSED end end if not pass1 and ( ( permission[ level ] or 0 ) < target:level( ) ) then user:reply( msg_god, hub_getbot( ) ) return PROCESSED end target:setpassword( pass ) user:reply( msg_ok .. pass, hub_getbot( ) ) local _ = not pass1 and target:reply( msg_ok .. pass, hub_getbot( ) ) return PROCESSED end hub.setlistener( "onStart", { }, function( ) 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, cmd, { "%[line:" .. ucmd_pass .. "]" }, { "CT1" }, minlevel ) ucmd.add( ucmd_menu_ct2, cmd, { "sid", "%[userSID]", "%[line:" .. ucmd_pass .. "]" }, { "CT2" }, minlevel ) end hubcmd = hub.import "etc_hubcommands" -- add hubcommand assert( hubcmd ) assert( hubcmd.add( cmd, onbmsg ) ) end ) hub.debug( "** Loaded "..scriptname.." "..scriptversion.." **" )