From fe16508fe1e3e5b09225ff17845dd180ecea43e5 Mon Sep 17 00:00:00 2001 From: Astoria Floyd Date: Sun, 8 Aug 2021 17:44:45 -0500 Subject: [PATCH] Added testmode functionality. Created experimental branch --- API/tools.lua | 9 +++- bot.lua | 41 +++++++++++-------- commands/complexCommands.lua | 37 +++++++++-------- commands/simpleCommands.lua | 75 ++++++++++++++++++++-------------- docs/{settings.lua => key.lua} | 2 +- docs/testmode.lua | 1 + startBot.sh | 0 7 files changed, 99 insertions(+), 66 deletions(-) rename docs/{settings.lua => key.lua} (75%) create mode 100644 docs/testmode.lua mode change 100644 => 100755 startBot.sh diff --git a/API/tools.lua b/API/tools.lua index acda8aa..e3ecbe5 100644 --- a/API/tools.lua +++ b/API/tools.lua @@ -17,6 +17,13 @@ function tools.initialize() return commands 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 +58,7 @@ end --Now deprecated function tools.messageDectection(message, search) local distinctMessage = string.lower(message.content) - local key = require("./docs/settings.lua") + local key = dofile("./docs/key.lua") local keyedSearch = key .. search if string.find(distinctMessage, keyedSearch) == 1 then return true diff --git a/bot.lua b/bot.lua index 53b8863..12658fd 100644 --- a/bot.lua +++ b/bot.lua @@ -12,28 +12,35 @@ 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 + if Tools.testModeDetection() == true then + Commands = Tools.initialize() + Tools = dofile("./API/tools.lua") + end + local args = message.content:split(" ") + local lowerArgs = args[1]:lower() + local command = Commands[lowerArgs] + if command then + command.exec(message, args) + elseif Tools.testModeDetection() == false and Tools.messageDectection(message, "reinitialize") == true then + reinitialize(message) + elseif Tools.testModeDetection() == true and Tools.messageDectection(message, "reinitialize") == true then + message:reply("You cannot preform this command because testMode is on!") + 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 --When a user is banned, post a lenney. client:on('userBan', function() diff --git a/commands/complexCommands.lua b/commands/complexCommands.lua index cca265d..f217277 100644 --- a/commands/complexCommands.lua +++ b/commands/complexCommands.lua @@ -2,57 +2,62 @@ 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) + exec = function (message) message.channel:send(tools.printFile("docs/help")) 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 .. "```" message.channel:send(result) message:delete() - end - }; +end +}; + } function complexCommands.initialize() -return commands + return commands end return complexCommands -- This project is libre, and licenced under the terms of the diff --git a/commands/simpleCommands.lua b/commands/simpleCommands.lua index 86a4300..3553b8b 100644 --- a/commands/simpleCommands.lua +++ b/commands/simpleCommands.lua @@ -1,45 +1,58 @@ 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") + message:delete() +end +}; + +[prefix..'test'] = { -- Test Command. +exec = function (message) + message.channel:send("I can add new commands on the fly, probably just going to be for testing purposes. Probably a security hole. Hence why this is the _experimental_ branch") + message:delete() +end +}; + } diff --git a/docs/settings.lua b/docs/key.lua similarity index 75% rename from docs/settings.lua rename to docs/key.lua index 8c14a52..52fb600 100644 --- a/docs/settings.lua +++ b/docs/key.lua @@ -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 diff --git a/docs/testmode.lua b/docs/testmode.lua new file mode 100644 index 0000000..1bae4d4 --- /dev/null +++ b/docs/testmode.lua @@ -0,0 +1 @@ +return false \ No newline at end of file diff --git a/startBot.sh b/startBot.sh old mode 100644 new mode 100755