WoW:USERAPI GetSlashFunc
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.
Returns the function called when using /cmd.
slashFunction = USERAPI 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 nowis 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).