local OAuth = require "OAuth" local consumer_key = "" local consumer_secret = "" local access_token = "" local access_token_secret = "" local client = OAuth.new(consumer_key, consumer_secret, { RequestToken = "https://api.twitter.com/oauth/request_token", AuthorizeUser = {"https://api.twitter.com/oauth/authorize", method = "GET"}, AccessToken = "https://api.twitter.com/oauth/access_token" }, { OAuthToken = access_token, OAuthTokenSecret = access_token_secret }) function run(msg, matches) if consumer_key:isempty() then return "Twitter Consumer Key is empty, write it in plugins/twitter.lua" end if consumer_secret:isempty() then return "Twitter Consumer Secret is empty, write it in plugins/twitter.lua" end if access_token:isempty() then return "Twitter Access Token is empty, write it in plugins/twitter.lua" end if access_token_secret:isempty() then return "Twitter Access Token Secret is empty, write it in plugins/twitter.lua" end local twitter_url = "https://api.twitter.com/1.1/statuses/show/" .. matches[1] .. ".json" local response_code, response_headers, response_status_line, response_body = client:PerformRequest("GET", twitter_url) local response = json:decode(response_body) local header = "Tweet from " .. response.user.name .. " (@" .. response.user.screen_name .. ")\n" local text = response.text -- replace short URLs if response.entities.url then for k, v in pairs(response.entities.urls) do local short = v.url local long = v.expanded_url text = text:gsub(short, long) end end -- remove images local images = {} if response.extended_entities and response.extended_entities.media then for k, v in pairs(response.extended_entities.media) do local url = v.url local pic = v.media_url text = text:gsub(url, "") table.insert(images, pic) end end -- send the parts local receiver = get_receiver(msg) send_msg(receiver, header .. "\n" .. text, ok_cb, false) send_photos_from_url(receiver, images) return nil end return { description = "When user sends twitter URL, send text and images to origin. Requieres OAuth Key.", usage = "", patterns = { "https://twitter.com/[^/]+/status/([0-9]+)" }, run = run }