You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
163 lines
4.7 KiB
Lua
163 lines
4.7 KiB
Lua
local tools = {}
|
|
--initializes or re-initializes the seed of RNG, based on Unix Time.
|
|
function tools.seed()
|
|
local seed = os.time()
|
|
math.randomseed(seed)
|
|
end
|
|
|
|
--Initializes commands.
|
|
function tools.initialize()
|
|
if tools.getMode() == "normal" then
|
|
local simpleCommands = dofile("./commands/simpleCommands.lua")
|
|
local complexCommands = dofile("./commands/complexCommands.lua")
|
|
local complexCommands = complexCommands.initialize()
|
|
local simpleCommands = simpleCommands.initialize()
|
|
local commands = tools.tableMerge(simpleCommands, complexCommands)
|
|
return commands
|
|
elseif tools.getMode() == "test" then
|
|
local simpleCommands = dofile("./commands/simpleCommands.lua")
|
|
local complexCommands = dofile("./commands/complexCommands.lua")
|
|
local experimentalCommands = dofile("./commands/experimentalCommands.lua")
|
|
local simpleCommands = simpleCommands.initialize()
|
|
local complexCommands = complexCommands.initialize()
|
|
local experimentalCommands = experimentalCommands.initialize()
|
|
local commandsP1 = tools.tableMerge(simpleCommands, complexCommands)
|
|
local commands = tools.tableMerge(commandsP1, experimentalCommands)
|
|
return commands
|
|
else
|
|
local simpleCommands = dofile("./commands/simpleCommands.lua")
|
|
local complexCommands = dofile("./commands/complexCommands.lua")
|
|
local complexCommands = complexCommands.initialize()
|
|
local simpleCommands = simpleCommands.initialize()
|
|
local commands = tools.tableMerge(simpleCommands, complexCommands)
|
|
return commands
|
|
end
|
|
end
|
|
|
|
--Sets mode
|
|
function tools.setMode(mode)
|
|
local file = io.open("./docs/mode", "w")
|
|
io.output(file)
|
|
file:seek("set", 0)
|
|
if mode == "test" then
|
|
file:write("'test'")
|
|
elseif mode == "normal" then
|
|
file:write("'normal'")
|
|
else
|
|
--Default to normal
|
|
file:write("'normal'")
|
|
end
|
|
file:close()
|
|
end
|
|
|
|
function tools.getMode()
|
|
local file = io.open("./docs/mode", "r")
|
|
io.input(file)
|
|
file:seek("set", 0)
|
|
local mode = file:read()
|
|
file:close()
|
|
if mode then
|
|
mode = mode:gsub("%s+", "")
|
|
mode = mode:gsub("'", "")
|
|
return mode
|
|
else
|
|
return "normal"
|
|
end
|
|
end
|
|
|
|
--Sets if we should reinitialize.
|
|
function tools.setReinit(reinit)
|
|
local reinitFile = io.open("./docs/reinitialize.lua", "r+")
|
|
io.input(reinitFile)
|
|
io.output(reinitFile)
|
|
reinitFile:seek("set", 7)
|
|
if type(reinit) == "boolean" then
|
|
if reinit == true then
|
|
reinitFile:write("true ")
|
|
elseif reinit == false then
|
|
reinitFile:write("false")
|
|
end
|
|
else
|
|
--default to no
|
|
reinitFile:write("return false")
|
|
end
|
|
reinitFile:close()
|
|
end
|
|
|
|
function tools.getReinit()
|
|
return dofile("./docs/reinitialize.lua")
|
|
end
|
|
|
|
--Reads an entire file, outputs as string.
|
|
function tools.printFile(file)
|
|
local rawFile = io.open(file, r)
|
|
local message = rawFile:read("*all")
|
|
rawFile:close()
|
|
return message
|
|
end
|
|
|
|
function tools.tableConcat(t1,t2)
|
|
for i=1,#t2 do
|
|
t1[#t1+1] = t2[i]
|
|
end
|
|
return t1
|
|
end
|
|
|
|
function tools.tableMerge(t1, t2)
|
|
for k,v in pairs(t2) do
|
|
if type(v) == "table" then
|
|
if type(t1[k] or false) == "table" then
|
|
tools.tableMerge(t1[k] or {}, t2[k] or {})
|
|
else
|
|
t1[k] = v
|
|
end
|
|
else
|
|
t1[k] = v
|
|
end
|
|
end
|
|
return t1
|
|
end
|
|
|
|
--Message detection logic. If string.find detects both the desired string, and the key, starting at position 1, do the thing.
|
|
--Now deprecated
|
|
function tools.messageDectection(message, search)
|
|
local distinctMessage = string.lower(message.content)
|
|
local key = dofile("./docs/key.lua")
|
|
local keyedSearch = key .. search
|
|
if string.find(distinctMessage, keyedSearch) == 1 then
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
|
|
--Special message detection logic. If string.find detects both the desired string, do the thing. Useful for chat filers.
|
|
function tools.messageDectectionAnywhere(message, search)
|
|
local distinctMessage = string.lower(message.content)
|
|
if string.find(distinctMessage, search) ~= nil then
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
|
|
--Executes Figlet on the host machine.
|
|
function tools.figlet(string)
|
|
local figleted = io.popen("figlet ".. string)
|
|
local result = figleted:read("*all")
|
|
return result
|
|
end
|
|
|
|
--Executes Cowsay on the host machine.
|
|
function tools.cowsay(string)
|
|
local cowsaid = io.popen("cowsay ".. string)
|
|
local result = cowsaid:read("*all")
|
|
return result
|
|
end
|
|
|
|
--Takes input and makes it output. GIGO.
|
|
function tools.echo(string)
|
|
return string
|
|
end
|
|
|
|
return tools |