diff --git a/otouto/plugins/cats.lua b/otouto/plugins/cats.lua index 4fd259c..cb3be6b 100644 --- a/otouto/plugins/cats.lua +++ b/otouto/plugins/cats.lua @@ -1,6 +1,7 @@ local cats = {} -local HTTP = require('socket.http') +local https = require('ssl.https') +local json = require('dkjson') local utilities = require('otouto.utilities') cats.command = 'cat [gif]' @@ -16,6 +17,11 @@ function cats:init(config) "^/cat (gif)$" } + cats.inline_triggers = { + "^cat (gif)$", + "^cat$" + } + cats.doc = [[* ]]..config.cmd_pat..[[cat*: Postet eine zufällige Katze *]]..config.cmd_pat..[[cat* _gif_: Postet eine zufällige, animierte Katze]] @@ -24,6 +30,35 @@ end local apikey = cred_data.cat_apikey or "" -- apply for one here: http://thecatapi.com/api-key-registration.html +function cats:inline_callback(inline_query, config, matches) + if matches[1] == 'gif' then + img_type = 'gif' + else + img_type = 'jpg' + end + local url = 'https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D%27http%3A%2F%2Fthecatapi.com%2Fapi%2Fimages%2Fget%3Fformat%3Dxml%26results_per_page%3D50%26type%3D'..img_type..'%26apikey%3D'..apikey..'%27&format=json' -- no way I'm using XML, plz die + local res, code = https.request(url) + if code ~= 200 then return end + local data = json.decode(res).query.results.response.data.images.image + if not data then return end + if not data[1] then return end + + local results = '[' + + for n in pairs(data) do + if img_type == 'gif' then + results = results..'{"type":"gif","id":"'..math.random(100000000000000000)..'","gif_url":"'..data[n].url..'","thumb_url":"'..data[n].url..'"}' + else + results = results..'{"type":"photo","id":"'..math.random(100000000000000000)..'","photo_url":"'..data[n].url..'","thumb_url":"'..data[n].url..'"}' + end + if n < #data then + results = results..',' + end + end + local results = results..']' + utilities.answer_inline_query(self, inline_query, results, 120) +end + function cats:action(msg, config) if matches[1] == 'gif' then local url = 'http://thecatapi.com/api/images/get?type=gif&apikey='..apikey