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