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.
200 lines
5.9 KiB
Lua
200 lines
5.9 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
|
|
|
|
--Work on this later, simplify fumo command, less hardcoding, please.
|
|
function tools.massDetection(folder, filetype)
|
|
local command = "find "..folder.." | grep -i "..filetype.." | grep -n "..filetype
|
|
local result = io.popen(command)
|
|
return(result)
|
|
end
|
|
|
|
-- Checks fumoFile after running the fumoLine numbering script, to get the number of .gif files there are.
|
|
function tools.fumoLines()
|
|
os.execute("/bin/bash API/fumoLines.sh")
|
|
local file = io.open("./docs/fumoFile", "r")
|
|
local fumoFile = file:read()
|
|
file:close()
|
|
return(fumoFile)
|
|
end
|
|
|
|
-- Creates a table of every gif in the /fumoGif folder. Uses the fumoList script to get their location, and the fumoLine script to get what line number they are, which is their key
|
|
function tools.fumoList()
|
|
local lineList = tools.fumoLines()
|
|
local fumoList = {}
|
|
os.execute("/bin/bash API/fumoList.sh")
|
|
local file = io.open("./docs/fumoFile", "r")
|
|
for i = lineList,1,-1
|
|
do
|
|
local number = i
|
|
fumoList[number]=file:read()
|
|
end
|
|
file:close()
|
|
return(fumoList)
|
|
end
|
|
|
|
--Checks if file exists
|
|
function tools.file_exists(name)
|
|
local f=io.open(name,"r")
|
|
if f~=nil then io.close(f) return true else return false end
|
|
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 |