diff options
author | Elias Fleckenstein <eliasfleckenstein@web.de> | 2021-03-10 10:42:16 +0100 |
---|---|---|
committer | Elias Fleckenstein <eliasfleckenstein@web.de> | 2021-03-10 10:42:16 +0100 |
commit | 4be4b5e69129cc90ae3c15d75bc89720e6caacbc (patch) | |
tree | dffab4df1c8229596204d708be5023604aa13708 /bot.lua | |
parent | bb6b251e2cc526072d83068638ee3eca72b53fdd (diff) | |
download | furrybot-4be4b5e69129cc90ae3c15d75bc89720e6caacbc.tar.xz |
Add insult command
Diffstat (limited to 'bot.lua')
-rw-r--r-- | bot.lua | 31 |
1 files changed, 23 insertions, 8 deletions
@@ -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 |