diff options
author | Elias Fleckenstein <eliasfleckenstein@web.de> | 2021-09-13 16:15:50 +0200 |
---|---|---|
committer | Elias Fleckenstein <eliasfleckenstein@web.de> | 2021-09-13 16:15:50 +0200 |
commit | 3f037bf26080729e0e3308d0b58820f9ac466d4f (patch) | |
tree | 480650104e67c2b6158cee59ed3e0243e2709e4b | |
parent | 07c7d01a1fcbdb369e474d296ad80cd4495f2a07 (diff) | |
download | furrybot-3f037bf26080729e0e3308d0b58820f9ac466d4f.tar.xz |
Add operator commands
-rw-r--r-- | bot.lua | 8 | ||||
-rw-r--r-- | http.lua | 1 | ||||
-rw-r--r-- | init.lua | 6 | ||||
-rw-r--r-- | nsfw.lua | 4 | ||||
-rw-r--r-- | operator.lua | 68 |
5 files changed, 74 insertions, 13 deletions
@@ -37,7 +37,7 @@ function furrybot.error_message(player, error, detail) end function furrybot.parse_message(player, message, discord) - if message:find("!") == 1 then + if message:find("!") == 1 and not furrybot.ignored[player] then local args = message:sub(2, #message):split(" ") local cmd = table.remove(args, 1) local func = furrybot.commands[cmd] @@ -65,10 +65,10 @@ function furrybot.reload() if not status then furrybot = old_fb - return false, furrybot.colors.error .. "Error: " .. furrybot.colors.detail .. init + furrybot.send("Error: " .. furrybot.colors.detail .. init, furrybot.colors.error) end else - return false, furrybot.colors.error .. "Syntax error: " .. furrybot.colors.detail .. err + furrybot.send("Syntax error: " .. furrybot.colors.detail .. err, furrybot.colors.error) end end @@ -201,7 +201,7 @@ end return function(_http, _env, _storage) http, env, storage = _http, _env, _storage - for _, f in ipairs {"nsfw", "roleplay", "death", "economy", "random", "http"} do + for _, f in ipairs {"nsfw", "roleplay", "death", "economy", "random", "http", "operator"} do local func, err = env.loadfile("clientmods/furrybot/" .. f .. ".lua") if not func then @@ -55,4 +55,3 @@ furrybot.commands["8ball"] = furrybot.commands.question return function(_http, _env, _storage) http, env, storage = _http, _env, _storage end - @@ -8,10 +8,4 @@ libclamity.register_on_chat_message(function(...) furrybot.parse_message(...) end) -minetest.register_chatcommand("fbreload", { - func = function() - return furrybot.reload(http, env, storage) - end -}) - loadfile(minetest.get_modpath("furrybot") .. "/bot.lua")()(http, env, storage) @@ -6,11 +6,11 @@ function furrybot.get_ascii_genitals(name, begin, middle, ending, seed) end function furrybot.get_ascii_dick(name) - return minetest.rainbow(furrybot.get_ascii_genitals(name, "8", "=", "D", 69)) + return minetest.rainbow(furrybot.get_ascii_genitals(name, "8", "=", "D", 31242)) end function furrybot.get_ascii_boobs(name) - return furrybot.get_ascii_genitals(name, "E", "Ξ", "3", 420) + return furrybot.get_ascii_genitals(name, "E", "Ξ", "3", 31243) end function furrybot.commands.dicksize(name, target) diff --git a/operator.lua b/operator.lua new file mode 100644 index 0000000..e668ac7 --- /dev/null +++ b/operator.lua @@ -0,0 +1,68 @@ +local http, env, storage +local C = minetest.get_color_escape_sequence + +function furrybot.is_operator(name) + return name == minetest.localplayer:get_name() or furrybot.operators[name] +end + +function furrybot.operator_command(cmd, func) + furrybot.commands[cmd] = function (name, ...) + if furrybot.is_operator(name) then + func(name, ...) + else + furrybot.error_message(name, "Sorry, you need to be an operator run this command: ", cmd) + end + end + furrybot.unsafe_commands[cmd] = true +end + +function furrybot.status_command(cmd, list_name, title, status) + furrybot.operator_command(cmd, function(name, target) + if target then + if furrybot[list_name][target] == status then + furrybot.error_message(name, "Player " .. (status and "already" or "not") .. " " .. title .. ": ", target) + else + furrybot[list_name][target] = status + storage:set_string(list_name, minetest.serialize(furrybot[list_name])) + furrybot.ping_message(name, "Successfully " .. cmd .. (cmd:sub(#cmd, #cmd) == "e" and "" or "e") .. "d " .. target, furrybot.colors.system) + end + else + furrybot.error_message(name, "You need to specify a player") + end + end) +end + +function furrybot.list_command(list_name, title) + return function() + local names = {} + + for name in pairs(furrybot[list_name]) do + table.insert(names, name) + end + + furrybot.send("List of " .. title .. ": " .. table.concat(names, ", "), furrybot.colors.system) + end +end + +furrybot.operator_command("reload", function() + furrybot.reload(http, env, storage) +end) + +furrybot.operator_command("disconnect", function() + minetest.disconnect() +end) + +furrybot.status_command("op", "operators", "an operator", true) +furrybot.status_command("deop", "operators", "an operator", nil) +furrybot.commands.oplist = furrybot.list_command("operators", "operators") + +furrybot.status_command("ignore", "ignored", "ignored", true) +furrybot.status_command("unignore", "ignored", "ignored", nil) +furrybot.commands.ignorelist = furrybot.list_command("ignored", "ignored players") + +return function(_http, _env, _storage) + http, env, storage = _http, _env, _storage + + furrybot.operators = minetest.deserialize(storage:get_string("operators")) or {} + furrybot.ignored = minetest.deserialize(storage:get_string("ignored")) or {} +end |