WoW:USERAPI GetSlashFunc

From AddOn Studio
Jump to navigation Jump to search
This page documents a <i>user-defined function</i> that you can copy and paste into your addon. Replace PREFIX with your addon or lib prefix to avoid conflicts between different versions of these functions.

User defined functions

Returns the function called when using /cmd.

slashFunction = USERAPI GetSlashFunc(cmd)

Function Parameters[edit]

Arguments[edit]

(cmd)
cmd
the slash command to search for

Returns[edit]

the actual function called when executing the cmd.

Example[edit]

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[edit]

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

Code[edit]

-- 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[edit]

  • 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).