GetSlashFunc

From Wowpedia
Jump to: navigation, search
This is a user-defined function that you can copy and paste into your addon.

Returns the function called when using /cmd.

slashFunction = GetSlashFunc(cmd)

Function Parameters

Arguments

(cmd)
cmd 
the slash command to search for

Returns

the actual function called when executing the cmd.

Example

local func = GetSlashFunc("/quit")
SLASH_MYQUIT1 = "/quit"
SLASH_MYQUIT2 = "/exit"
SlashCmdList["MYQUIT"] = function(msg)
    if msg == "now" then
        ForceQuit()
    elseif func then
        func()
    end
end

Result

Quit now instead of in 30 seconds when /quit now is used.

Code

-- returns a slash command function on success or an informative error function on failure.
local function GetSlashFunc(cmd)
    if not cmd then
        return function(cmd) print("You must supply a command.") end
    end
    if cmd:sub(1, 1) ~= "/" then
        cmd = "/" .. cmd
    end
    for id, val in pairs(_G) do
        if id:sub(1, 5) == "SLASH" and val == cmd then
            local slashID = id:match("SLASH_(%a*)%d*")
            return SlashCmdList[slashID]
        end
    end
    -- Didn't find one?
    return function(cmd) print(cmd, "doesn't exist.") end
end

Notes

  • This will not work to hook secure commands such as /target, /cast, /focus, etc. The functions that are called with those commands are not globally accessible to addon scripts and, if they were, you would just end up breaking stuff.
  • If an addon creates its slash command after yours, yours will no longer work (as per usual).