diff --git a/bot/utils.lua b/bot/utils.lua index a7d2fe6..dab48e0 100644 --- a/bot/utils.lua +++ b/bot/utils.lua @@ -527,6 +527,17 @@ function load_from_file(file, default_data) return result end +function unescape(str) + str = string.gsub( str, '<', '<' ) + str = string.gsub( str, '>', '>' ) + str = string.gsub( str, '"', '"' ) + str = string.gsub( str, ''', "'" ) + str = string.gsub( str, '&#(%d+);', function(n) return string.char(n) end ) + str = string.gsub( str, '&#x(%d+);', function(n) return string.char(tonumber(n,16)) end ) + str = string.gsub( str, '&', '&' ) -- Be sure to do this after all others + return str +end + -- See http://stackoverflow.com/a/14899740 function unescape_html(str) local map = { diff --git a/plugins/twitter.lua b/plugins/twitter.lua index bc0bc58..269c2a3 100644 --- a/plugins/twitter.lua +++ b/plugins/twitter.lua @@ -34,7 +34,6 @@ function run(msg, matches) local header = "Tweet von " .. response.user.name .. " (@" .. response.user.screen_name .. ")\n" local text = response.text - text = string.gsub(text, "&", "&") -- replace short URLs if response.entities.url then @@ -58,6 +57,7 @@ function run(msg, matches) -- send the parts local receiver = get_receiver(msg) + local text = unescape(text) send_msg(receiver, header .. "\n" .. text, ok_cb, false) for k, v in pairs(images) do local file = download_to_file(v)