From 4be4b5e69129cc90ae3c15d75bc89720e6caacbc Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Wed, 10 Mar 2021 10:42:16 +0100 Subject: [PATCH] Add insult command --- bot.lua | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/bot.lua b/bot.lua index ab8982b..8758156 100644 --- a/bot.lua +++ b/bot.lua @@ -15,7 +15,7 @@ function furrybot.ping_player(player, message) end function furrybot.ping_player_error(player, err, detail) - furrybot.ping_player(player, C("#D70029") .. " " .. err .. " " .. (detail and C("#FF6683") .. "'" .. detail .. "'" .. C("#D70029") or "") .. ".") + furrybot.ping_player(player, C("#D70029") .. " " .. err .. (detail and C("#FF6683") .. " '" .. detail .. "'" .. C("#D70029") or "") .. ".") end function furrybot.player_online(name) @@ -27,8 +27,10 @@ function furrybot.player_online(name) end function furrybot.check_online(name, target) - if name == target then - furrybot.ping_player_error(name, "You need to specify another player") + if not target then + furrybot.ping_player_error(name, "You need to specify a player") + elseif name == target then + furrybot.ping_player_error(name, "You need to specify a different player than yourself") elseif furrybot.player_online(target) then return true else @@ -43,14 +45,19 @@ end function furrybot.http_request(url, name, callback) furrybot.http.fetch({url = url}, function(res) if res.succeeded then - local data = minetest.parse_json(res.data)[1] - callback(data) + callback(res.data) else furrybot.ping_player_error(name, "Request failed with code", res.code) end end) end +function furrybot.json_http_request(url, name, callback) + furrybot.http_request(url, name, function(data) + callback(minetest.parse_json(data)[1]) + end) +end + function furrybot.recieve(msg) msg = minetest.strip_colors(msg) if msg:find("<") == 1 then @@ -134,16 +141,16 @@ function furrybot.commands.help() end function furrybot.commands.verse(name) - furrybot.http_request("https://labs.bible.org/api/?type=json&passage=random", name, function(data) + furrybot.json_http_request("https://labs.bible.org/api/?type=json&passage=random", name, function(data) furrybot.send(data.text .. C("#00FFC3") .. "[" .. data.bookname .. " " .. data.chapter .. "," .. data.verse .. "]") end) end function furrybot.commands.define(name, word) if word then - furrybot.http_request("https://api.dictionaryapi.dev/api/v1/entries/en_US/" .. word, name, function(data) + furrybot.json_http_request("https://api.dictionaryapi.dev/api/v1/entries/en_US/" .. word, name, function(data) local meaning = data.meaning - local selected = meaning.exclamation or meaning.noun or meaning.verb or meaning["transitive verb"] or meaning.adverb or meaning["relative adverb"] + local selected = meaning.exclamation or meaning.noun or meaning.verb or meaning.adjective or meaning["transitive verb"] or meaning.adverb or meaning["relative adverb"] if not selected then print(dump(meaning)) furrybot.ping_player_error(name, "Error in parsing response") @@ -156,6 +163,14 @@ function furrybot.commands.define(name, word) end end +function furrybot.commands.insult(name, target) + if furrybot.check_online(name, target) then + furrybot.http_request("https://insult.mattbas.org/api/insult", name, function(data) + furrybot.ping_player(target, data) + end) + end +end + function furrybot.commands.rolldice(name) furrybot.ping_player(name, "rolled a dice and got a " .. C("#AAFF43") .. math.random(6)) end -- 2.44.0