PtokaX forum

Development Section => HOW-TO's => Topic started by: OpiumVolage on 21 October, 2003, 10:38:51

Title: Parsing a command in main chat.
Post by: OpiumVolage on 21 October, 2003, 10:38:51
This code has been made to parse bot command sent in main chat efficiently, feel free to use it.

-- vim:ts=4:sw=4:noet:syntax=lua
-- Command line parsing test (OpiumVolage 22/09/2003)

function DataArrival(user, data)
-- call isCommand
local Action = isCommand(data)
-- if no command prefix is found exit
if not Action then return end
-- Parse the rest of the line to find the command,
-- the optional sub-command and parameters.
local s, e, Cmd1, Cmd2, Params =
strfind(data, "^%b<>%s%"..Action.."(%S+)%s*(%S*)%s*(.*)|$")
if Action == "!" then tmpMsg = "You pass a hub command: !\r\n"
elseif Action == "?" then tmpMsg = "You check a config: ?\r\n"
elseif Action == "=" then tmpMsg = "You change a config: =\r\n"
end
tmpMsg = tmpMsg.."Command is: "..Cmd1.."\r\n"
tmpMsg = tmpMsg.."Sub-command is: "..Cmd2.."\r\n"
tmpMsg = tmpMsg.."Params are: "..Params
SendToAll("Commands", tmpMsg)
end

function isCommand(data)
-- try to find any command prefix (!, ? or =)
-- return nil or the prefix.
local s, e, prefix = strfind(data, "%b<>%s([!%?=])%S+")
return prefix
end
Title:
Post by: Fangs404 on 25 April, 2005, 00:48:42
i know this is lua 4, but i can definitely make use of this for lua 5.  giving this a nice bump because this is really important to know how to do.  thanks!