new plugin qr_codes
This commit is contained in:
parent
4339269284
commit
1e77e4de80
104
plugins/qr_codes.lua
Normal file
104
plugins/qr_codes.lua
Normal file
@ -0,0 +1,104 @@
|
||||
--[[
|
||||
* qr plugin uses:
|
||||
* - http://goqr.me/api/doc/create-qr-code/
|
||||
* psykomantis
|
||||
]]
|
||||
|
||||
function url_encode(str)
|
||||
if (str) then
|
||||
str = string.gsub (str, "\n", "\r\n")
|
||||
str = string.gsub (str, "([^%w %-%_%.%~])",
|
||||
function (c) return string.format ("%%%02X", string.byte(c)) end)
|
||||
str = string.gsub (str, " ", "+")
|
||||
end
|
||||
return str
|
||||
end
|
||||
|
||||
|
||||
function get_hex(str)
|
||||
if(string.match(str,"(red)") == "red") then
|
||||
return "f00"
|
||||
elseif(string.match(str,"(blue)") == "blue") then
|
||||
return "00f"
|
||||
elseif(string.match(str,"(green)") == "green") then
|
||||
return "0f0"
|
||||
elseif(string.match(str,"(yellow)") == "yellow") then
|
||||
return "ff0"
|
||||
elseif(string.match(str,"(purple)") == "purple") then
|
||||
return "f0f"
|
||||
elseif(string.match(str,"(white)") == "white") then
|
||||
return "fff"
|
||||
elseif(string.match(str,"(black)") == "black") then
|
||||
return "000"
|
||||
elseif(string.match(str,"(gray)") == "gray") then
|
||||
return "ccc"
|
||||
end
|
||||
|
||||
return str
|
||||
end
|
||||
|
||||
|
||||
|
||||
do
|
||||
|
||||
local function qr(msg, query)
|
||||
|
||||
local receiver = get_receiver(msg)
|
||||
|
||||
local http = require("socket.http")
|
||||
local url = "http://api.qrserver.com/v1/create-qr-code/?" .. query .. "&size=600x600" --fixed size otherways it's low detailed
|
||||
local response, code, headers = http.request(url)
|
||||
|
||||
if code ~= 200 then
|
||||
return "Oops! Error: " .. code
|
||||
end
|
||||
|
||||
if #response > 0 then
|
||||
send_photo_from_url(receiver, url)
|
||||
return
|
||||
|
||||
end
|
||||
return "Oops! Something strange happened :("
|
||||
end
|
||||
|
||||
|
||||
|
||||
local function run(msg, matches)
|
||||
|
||||
local query = ""
|
||||
|
||||
if(#matches == 3) then
|
||||
|
||||
local bgcolor = get_hex(matches[1])
|
||||
local color = get_hex(matches[2])
|
||||
local data = url_encode(matches[3]:trim())
|
||||
|
||||
query = "data=" .. data .. "&color=" .. color .. "&bgcolor=" .. bgcolor
|
||||
|
||||
return qr(msg, query)
|
||||
|
||||
end
|
||||
|
||||
query = "data=" .. url_encode(matches[1]:trim())
|
||||
|
||||
return qr(msg, query)
|
||||
end
|
||||
|
||||
return {
|
||||
description = {"qr code plugin for telegram, given a text it returns the qr code"},
|
||||
usage = {
|
||||
"/qr [text]",
|
||||
'/qr "[background color]" "[data color]" [text]',
|
||||
".......................................................",
|
||||
"Color through text: red|green|blue|purple|black|white|gray",
|
||||
"Or colors through hex notation: (\"a56729\" is brown)",
|
||||
"Or colors through decimals: (\"255-192-203\" is pink)"
|
||||
},
|
||||
patterns = {
|
||||
'^/qr "(.+)" "(.+)" (.+)$',
|
||||
"^/qr (.+)$"
|
||||
},
|
||||
run = run
|
||||
}
|
||||
|
||||
end
|
Reference in New Issue
Block a user