Merge experimental with main. #1

Merged
AstoriaFloyd merged 5 commits from experimental into main 3 years ago

1
.gitignore vendored

@ -3,3 +3,4 @@ gateway.json
token.lua
launch.json
.vscode
interpreter.lua

@ -9,14 +9,34 @@ end
--Initializes commands.
function tools.initialize()
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
if tools.testModeDetection() == false 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
end
if tools.testModeDetection() == true 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
end
end
--Reads testmode.lua
function tools.testModeDetection()
return dofile("./docs/testmode.lua")
end
--
--Reads an entire file, outputs as string.
function tools.printFile(file)
local rawFile = io.open(file, r)
@ -51,7 +71,7 @@ end
--Now deprecated
function tools.messageDectection(message, search)
local distinctMessage = string.lower(message.content)
local key = dofile("./docs/settings.lua")
local key = dofile("./docs/key.lua")
local keyedSearch = key .. search
if string.find(distinctMessage, keyedSearch) == 1 then
return true

@ -7,33 +7,67 @@ discordia.extensions()
client:once("ready", function()
client:setGame("Astoria's bot, very sad!")
print('Logged in as '.. client.user.username)
Commands = Tools.initialize()
Commands = Tools.initialize()
if Tools.testModeDetection() == true then
mode = "testMode"
else
mode = "normal"
end
end)
--Command handler
client:on('messageCreate', function(message)
if message.author.bot then return end
local args = message.content:split(" ")
local lowerArgs = args[1]:lower()
local command = Commands[lowerArgs]
if command then
command.exec(message, args)
end
if message.author.bot then return end
local shouldReinit = false
if Tools.testModeDetection() == true and mode == "normal" then
mode = "testMode"
shouldReinit = true
elseif Tools.testModeDetection() == false and mode == "testMode" then
mode = "normal"
shouldReinit = false
end
if mode == "testMode" then
shouldReinit = true
end
if mode == "normal" and Tools.messageDectection(message, "reinitialize") == true then
p("reinitd at "..os.time())
reinitialize(message)
elseif mode == "testMode" and Tools.messageDectection(message, "reinitialize") == true then
message:reply("You cannot preform this command because testMode is on!")
p("Not reinitd at "..os.time())
end
local args = message.content:split(" ")
local lowerArgs = args[1]:lower()
local command = Commands[lowerArgs]
if command then
if shouldReinit == true then
Commands = Tools.initialize()
Tools = dofile("./API/tools.lua")
command = Commands[lowerArgs]
p("reinitd at "..os.time())
shouldReinit = false
end
command.exec(message, args)
end
end)
--Re-Init detector. Only command that itself cannot be fully re-initialized
client:on('messageCreate', function(message)
function reinitialize(message)
local user = message.guild:getMember(message.author.id)
if Tools.messageDectection(message, "reinitialize") == true then
if not user:hasPermission("administrator") then
message:reply("You cannot re-initialize this bot!")
else
Commands = Tools.initialize()
Tools = dofile("./API/tools.lua")
message:reply("Re-Initialized!")
if not user:hasPermission("administrator") then
message:reply("You cannot re-initialize this bot!")
else
Commands = Tools.initialize()
Tools = dofile("./API/tools.lua")
message:reply("Re-Initialized!")
end
end
end
end)
end
function selfReinitialize()
Commands = Tools.initialize()
Tools = dofile("./API/tools.lua")
end
--When a user is banned, post a lenney.
client:on('userBan', function()

@ -1,60 +1,81 @@
local tools = dofile("./API/tools.lua")
local rng = dofile("./API/rng.lua")
local complexCommands = {}
local prefix = dofile("./docs/settings.lua")
local prefix = dofile("./docs/key.lua")
local commands = { -- Define commands its a table that will contain our commands
[prefix..'helpme'] = { -- Dumps docs/help to chat, took me forever to figure out.
exec = function (message)
message.channel:send(tools.printFile("docs/help"))
exec = function (message)
if tools.testModeDetection() == true then
message.channel:send(tools.printFile("docs/helpTestMode"))
else
message.channel:send(tools.printFile("docs/help"))
end
end
};
};
[prefix..'roll'] = { -- Rolls a d20, check RNG for more info.
exec = function (message, arg)
exec = function (message, arg)
if not arg[2] then
message.channel:send(rng.d20())
else
message.channel:send(rng.roll(arg))
end
end
};
--[[
end
};
--[[
[prefix..'figlet'] = { -- Parrots input to figlet, then echos it to the same channel you are in.
exec = function (message)
exec = function (message)
local prefixLength = string.len(prefix)
local figletthis = string.sub(message.content, 7+prefixLength)
local figlet = tools.figlet(figletthis)
local result = "```fix" .. "\n" .. figlet .. "```"
message.channel:send(result)
message:delete()
end
};
end
};
[prefix..'cowsay'] = { -- Parrots input to cowsay, then echos it to the same channel you are in.
exec = function (message)
exec = function (message)
local prefixLength = string.len(prefix)
local cowsay = string.sub(message.content, 7+prefixLength)
local cowsaid = tools.cowsay(cowsay)
local result = "```fix" .. "\n" .. cowsaid .. "```"
message.channel:send(result)
message:delete()
end
};
]]
end
};
]]
[prefix..'echo'] = { -- Echo's what you said back out, in a fix codeblock. Could be against TOS.
exec = function (message)
exec = function (message)
local prefixLength = string.len(prefix)
local echo = string.sub(message.content, 5+prefixLength)
local echoed = tools.echo(echo)
local result = "```fix" .. "\n" .. echoed .. "```"
if result == "```fix\n```" then message:delete() return
else
message.channel:send(result)
message:delete()
end
};
end
};
[prefix..'echoclean'] = { -- Echo's what you said back out, in a fix codeblock. Could be against TOS.
exec = function (message)
local prefixLength = string.len(prefix)
local echo = string.sub(message.content, 10+prefixLength)
local echoed = tools.echo(echo)
local result = echoed
message.channel:send(result)
message:delete()
end
};
}
function complexCommands.initialize()
return commands
return commands
end
return complexCommands
-- This project is libre, and licenced under the terms of the

@ -0,0 +1,27 @@
local tools = dofile("./API/tools.lua")
local rng = dofile("./API/rng.lua")
local experimentalCommands = {}
local prefix = dofile("./docs/key.lua")
local commands = { -- Define commands its a table that will contain our commands
[prefix..'experiment'] = {
exec = function (message)
message.channel:send("Experimental mode works!")
end
};
--[[
[prefix..'fumo'] = { -- To be implemented later..
exec = function (message)
end
};
]]
}
function experimentalCommands.initialize()
return commands
end
return experimentalCommands
-- This project is libre, and licenced under the terms of the
-- DO WHAT THE FUCK YOU WANT TO PUBLIC LICENCE, version 3.1,
-- as published by dtf on July 2019. See the COPYING file or
-- https://ph.dtf.wtf/w/wtfpl/#version-3-1 for more details.

@ -1,45 +1,51 @@
local basicCommands = {}
local prefix = dofile("./docs/settings.lua")
local prefix = dofile("./docs/key.lua")
local commands = { -- Define commands its a table that will contain our commands
[prefix..'lenny'] = { -- Creates a lenny face
exec = function (message)
message.channel:send('( ͡° ͜ʖ ͡°)')
end
};
exec = function (message)
message.channel:send('( ͡° ͜ʖ ͡°)')
end
};
[prefix..'glomp'] = { -- Posts an image of glomping, may add RNG later.
exec = function (message)
message.channel:send('https://tenor.com/view/tv-shows-television-tackle-hug-hug-glomping-gif-14859564')
end
};
exec = function (message)
message.channel:send('https://tenor.com/view/tv-shows-television-tackle-hug-hug-glomping-gif-14859564')
end
};
[prefix..'ping'] = { -- Ping Pong function, generally just to see if its on or not without triggering a more complex function. Also tests if its really borked.
exec = function (message)
message.channel:send("Pong!")
end
};
exec = function (message)
message.channel:send("Pong!")
end
};
[prefix..'fire'] = { -- Places elmo on fire in chat.
exec = function (message)
message.channel:send("https://tenor.com/view/elmo-fire-burn-flame-gif-5042503")
end
};
exec = function (message)
message.channel:send("https://tenor.com/view/elmo-fire-burn-flame-gif-5042503")
end
};
[prefix..'time'] = { -- Posts time to channel, stuck in military time, perhaps use a io.popen() to get actual system time in a more human readable format?
exec = function (message)
message.channel:send('The current time in military time is ' .. os.date() .. ' atleast in Chicago!')
end
};
exec = function (message)
message.channel:send('The current time in military time is ' .. os.date() .. ' atleast in Chicago!')
end
};
[prefix..'analyze'] = { -- Prints contents and attachments to console.
exec = function (message)
p(message.content)
p(message.attachments)
end
};
exec = function (message)
p(message.content)
p(message.attachments)
end
};
[prefix..'welsh'] = { -- Welsh.
exec = function (message)
message.channel:send("https://cdn.discordapp.com/attachments/748713417489252503/770289379586867231/image0.gif")
message:delete()
end
};
exec = function (message)
message.channel:send("https://cdn.discordapp.com/attachments/748713417489252503/770289379586867231/image0.gif lol")
message:delete()
end
};
}

@ -2,15 +2,15 @@
Basic functions
---------------
-figlet
Converts text to ASCII art
Converts text to ASCII art. Currently disabled due to security problems.
-cowsay
Converts text to the speech of a cow
Converts text to the speech of a cow. Currently disabled due to security problems.
-ping
Pong!
-roll [Argument]
Rolls a dice, by default d20!
-time
Displays the time in military time, as if you were in chicago
Displays the time in military time, as if you were in chicago.
-helpme
^-^
Basic Information
@ -18,7 +18,7 @@ Basic Information
All functions start with '!' though this may change in the future
Under construction! More or less from scratch(Only just got basic I/O working!)
May have secret functions!
Mess with the code
Mess with the code to your hearts content.
------------------
The source code is freely availible at
https://github.com/AstoriaFloyd/thembot

@ -0,0 +1,31 @@
```fix
Basic functions
---------------
-figlet
Converts text to ASCII art. Currently disabled due to security problems.
-cowsay
Converts text to the speech of a cow. Currently disabled due to security problems.
-ping
Pong!
-roll [Argument]
Rolls a dice, by default d20!
-time
Displays the time in military time, as if you were in chicago.
-helpme
^-^
Basic Information
-----------------
All functions start with '!' though this may change in the future
Under construction! More or less from scratch(Only just got basic I/O working!)
May have secret functions!
Mess with the code to your hearts content.
------------------
The source code is freely availible at
https://github.com/AstoriaFloyd/thembot
Feel free to modify, redistribute, whatever.
If you want to monitise it, sure go ahead.
This code follows the WTFPL, in all 0 of its conditions.
Extra Information
-----------------
This bot is currently in text mode.
```

@ -1,5 +1,5 @@
--Litterally just the prefix right now
return "!"
return "exp!"
-- This project is libre, and licenced under the terms of the
-- DO WHAT THE FUCK YOU WANT TO PUBLIC LICENCE, version 3.1,
-- as published by dtf on July 2019. See the COPYING file or

@ -0,0 +1 @@
return false
Loading…
Cancel
Save