]> git.lizzy.rs Git - furrybot.git/commitdiff
Add insult command
authorElias Fleckenstein <eliasfleckenstein@web.de>
Wed, 10 Mar 2021 09:42:16 +0000 (10:42 +0100)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Wed, 10 Mar 2021 09:42:16 +0000 (10:42 +0100)
bot.lua

diff --git a/bot.lua b/bot.lua
index ab8982b30b38e97d1c3eda8bba9012dc99faa7c0..87581561338282d3413c8b6dfa197337c16bdf09 100644 (file)
--- 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