Merge Upstream (luautf8 benötigt!!!)

This commit is contained in:
Andreas Bielawski
2016-09-05 13:59:57 +02:00
3 changed files with 50 additions and 21 deletions

View File

@@ -1,33 +1,54 @@
local xkcd = {}
xkcd.command = 'xkcd [i]'
xkcd.base_url = 'https://xkcd.com/info.0.json'
xkcd.strip_url = 'https://xkcd.com/%s/info.0.json'
function xkcd:init(config)
xkcd.triggers = {
xkcd.triggers = {
"xkcd.com/(%d+)",
"^/xkcd (%d+)",
"xkcd.com/(%d+)"
"^/xkcd (r)",
"^/xkcd"
}
xkcd.doc = [[*
]]..config.cmd_pat..[[xkcd* _[i]_: Gibt diesen XKCD-Comic aus]]
end
function xkcd:get_xkcd(id)
local res,code = https.request("https://xkcd.com/"..id.."/info.0.json")
if code ~= 200 then return nil end
local data = json.decode(res)
local link_image = data.img
if link_image:sub(0,2) == '//' then
link_image = link_image:sub(3,-1)
xkcd.doc = [[*
]]..config.cmd_pat..[[xkcd* _[i]_: Gibt den aktuellen XKCD-Comic aus, oder die Nummer, wenn eine gegeben ist. Wenn "r" übergeben wird, wird ein zufälliger Comic zurückgegeben.]]
local jstr = https.request(xkcd.base_url)
if jstr then
local data = json.decode(jstr)
if data then
xkcd.latest = data.num
end
end
return link_image, data.title, data.alt
xkcd.latest = xkcd.latest or 1700
end
function xkcd:action(msg, config, matches)
local url, title, alt = xkcd:get_xkcd(matches[1])
if not url then utilities.send_reply(msg, config.errors.connection) return end
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(url)
utilities.send_photo(msg.chat.id, file, title..'\n'..alt, msg.message_id)
if matches[1] == 'r' then
input = math.random(xkcd.latest)
elseif tonumber(matches[1]) then
input = tonumber(matches[1])
else
input = xkcd.latest
end
local url = xkcd.strip_url:format(input)
local jstr, code = https.request(url)
if code == 404 then
utilities.send_reply(msg, config.errors.results)
elseif code ~= 200 then
utilities.send_reply(msg, config.errors.connection)
else
local data = json.decode(jstr)
local output = string.format(
'<b>%s</b> (<a href="%s">%s</a>)\n<i>%s</i>',
utilities.html_escape(utilities.fix_utf8(data.safe_title)),
utilities.html_escape(data.img),
data.num,
utilities.html_escape(utilities.fix_utf8(data.alt))
)
utilities.send_message(msg.chat.id, output, false, nil, 'html')
end
end
return xkcd
return xkcd