Add hasprivs chat command (#7336)
authorAnand S <36130650+ClobberXD@users.noreply.github.com>
Tue, 12 Jun 2018 13:39:43 +0000 (19:09 +0530)
committerSmallJoker <SmallJoker@users.noreply.github.com>
Tue, 12 Jun 2018 13:39:43 +0000 (15:39 +0200)
Require 'basic_privs' priv
Only the online players are listed.

builtin/game/chatcommands.lua

index 31ce4359f3d0a2e80ed579a5bd70f08430d8e38b..a8aaba9c609b09ace652902c42d0cf8689227569 100644 (file)
@@ -41,7 +41,7 @@ end)
 
 if core.settings:get_bool("profiler.load") then
        -- Run after register_chatcommand and its register_on_chat_message
-       -- Before any chattcommands that should be profiled
+       -- Before any chatcommands that should be profiled
        profiler.init_chatcommand()
 end
 
@@ -103,6 +103,31 @@ core.register_chatcommand("privs", {
        end,
 })
 
+core.register_chatcommand("hasprivs", {
+       params = "<privilege>",
+       description = "Return list of all online players with privilege.",
+       privs = {basic_privs = true},
+       func = function(caller, param)
+               param = param:trim()
+               if param == "" then
+                       return false, "Invalid parameters (see /help hasprivs)"
+               end
+               if not core.registered_privileges[param] then
+                       return false, "Unknown privilege!"
+               end
+               local privs = core.string_to_privs(param)
+               local players_with_privs = {}
+               for _, player in pairs(core.get_connected_players()) do
+                       local player_name = player:get_player_name()
+                       if core.check_player_privs(player_name, privs) then
+                               table.insert(players_with_privs, player_name)
+                       end
+               end     
+               return true, "Players online with the \"" .. param .. "\" priv: " ..
+                       table.concat(players_with_privs, ", ")
+       end     
+})
+
 local function handle_grant_command(caller, grantname, grantprivstr)
        local caller_privs = core.get_player_privs(caller)
        if not (caller_privs.privs or caller_privs.basic_privs) then