This page documents a user-defined function that you can copy and paste into your addon. Replace <PREFIX> with your AddOn's prefix to avoid conflicts between different versions of these functions.
← User defined functions < GetSlashFunc
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).