--[[ cmd_userinfo.lua v0.06 by blastbeat - this script adds a command "userinfo" get infos about an user - usage: [+!#]userinfo sid|nick|cid || - no arguments means you get info about yourself - changelog 0.06: - some bugfixes; added stats - changelog 0.05: - updated script api - regged hubcommand - changelog 0.04: - added SU - changelog 0.03: - added language files, ucmd - changelog 0.02: - added share, email, slots, hubs, version in info ]]-- --// settings begin //-- local scriptname = "cmd_userinfo" local scriptversion = "0.06" local scriptlang = cfg.get "language" local minlevel = 60 -- according to the permission table local permission = { --// [ user_level = level means user_level can get info about users with level max //-- [ 60 ] = 50, -- operator to servers [ 70 ] = 60, -- supervisor to operators [ 80 ] = 70, -- admin to supervisors [ 100 ] = 100, -- hubowner can get info about all } local cmd = "userinfo" --// settings end //-- local utf_match = utf.match local hub_getbot = hub.getbot local hub_escapefrom = hub.escapefrom local hub_issidonline = hub.issidonline local hub_iscidonline = hub.iscidonline local hub_isnickonline = hub.isnickonline 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: [+!#]userinfo sid|nick|cid ||" local msg_off = lang.msg_off or "User not found." local msg_god = lang.msg_god or "You cannot investigate gods." local msg_unknown = lang.msg_unknown or "" local msg_userinfo = lang.msg_userinfo or [[ Userinfo: Nick: %s 1. Nick: %s Desc: %s Share: %s Email: %s Slots: %s Hubs: %s Version: %s SID: %s CID: %s Hash: %s IP: %s Port: %s Srvport: %s SSL: %s SU: %s Bot: %s Rank: %s Level: %s Regged: %s Sendet mbytes: %s Received mbytes: %s ]] local help_title = lang.help_title or "userinfo" local help_usage = lang.help_usage or "[+!#]userinfo sid|nick|cid ||" local help_desc = lang.help_desc or "get info about an user by sid or nick or cid; no arguments -> about yourself" local ucmd_menu_ct1 = lang.ucmd_menu_ct1 or { "Your user info" } local ucmd_menu_ct2 = lang.ucmd_menu_ct2 or { "User info" } local hubcmd local onbmsg = function( user, command, parameters ) local level = user:level( ) if level < minlevel then user:reply( msg_denied, hub.getbot( ) ) return PROCESSED end local by, id = utf_match( parameters, "^(%S+) (.*)" ) local target if not ( (by == "sid" or by == "nick" or by == "cid" ) and id ) then target = user else target = ( by == "nick" and hub_isnickonline( id ) ) or ( by == "sid" and hub_issidonline( id ) ) or ( by == "cid" and hub_iscidonline( id ) ) end if not target then user:reply( msg_off, hub_getbot( ) ) return PROCESSED end if not ( user == target ) and ( ( permission[ level ] or 0 ) < target:level( ) ) then user:reply( msg_god, hub_getbot( ) ) return PROCESSED end local rstat, sstat = user:client( ):getstats( ) local hn, hr, ho = target.hubs( ) local userinfo = utf.format( msg_userinfo, hub_escapefrom( target:nick( ) ), hub_escapefrom( target:firstnick( ) ), hub_escapefrom( target.description( ) or msg_unknown ), target.share( ) or msg_unknown, hub_escapefrom( target.email( ) or msg_unknown ), target.slots( ) or msg_unknown, ( hn or msg_unknown ) .. "/" .. ( hr or msg_unknown ) .. "/" .. ( ho or msg_unknown ), hub_escapefrom( target.version( ) or msg_unknown ), target:sid( ), target:cid( ), target:hash( ), target:ip( ), target:clientport( ), target:serverport( ), tostring( target:ssl( ) ), tostring( target:features( ) ), tostring( target:isbot( ) ), target:rank( ), target:level( ), tostring( user:isregged( ) ), tostring( rstat ), tostring( sstat ) ) user:reply( userinfo, hub_getbot( ), 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, 1 ) -- reg help end local ucmd = hub.import "etc_usercommands" -- add usercommand if ucmd then ucmd.add( ucmd_menu_ct1, cmd, { }, { "CT1" }, 1 ) ucmd.add( ucmd_menu_ct2, cmd, { "sid", "%[userSID]" }, { "CT2" }, minlevel ) end hubcmd = hub.import "etc_hubcommands" -- add hubcommand assert( hubcmd ) assert( hubcmd.add( cmd, onbmsg ) ) return nil end ) hub.debug( "** Loaded "..scriptname.." "..scriptversion.." **" )