This repository has been archived on 2021-04-24. You can view files and clone it, but cannot push or open issues or pull requests.
Mikubot-2/miku/plugins/media.lua

62 lines
2.1 KiB
Lua
Raw Normal View History

2016-06-14 15:25:53 +02:00
local media = {}
2016-09-11 14:07:55 +02:00
local mime = (loadfile "./miku/mimetype.lua")()
2016-09-08 15:15:19 +02:00
2016-06-14 15:25:53 +02:00
media.triggers = {
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(gif))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(mp4))$",
2016-06-14 15:25:53 +02:00
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(pdf))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(ogg))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(zip))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(tar.gz))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(7z))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(mp3))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(rar))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(wmv))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(doc))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(avi))$",
2016-06-14 15:25:53 +02:00
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(wav))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(apk))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(ipa))$",
2016-06-14 15:25:53 +02:00
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(webm))$",
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(ogv))$",
2016-06-14 15:25:53 +02:00
"(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(webp))$"
}
function media:action(msg, config, matches)
2016-06-14 15:25:53 +02:00
local url = matches[1]
local ext = matches[2]
local mime_type = mime.get_content_type_no_sub(ext)
2016-06-14 15:25:53 +02:00
local receiver = msg.chat.id
if mime_type == 'audio' then
chat_action = 'upload_audio'
elseif mime_type == 'video' then
chat_action = 'upload_video'
else
chat_action = 'upload_document'
end
2016-06-14 15:25:53 +02:00
local file, last_modified, nocache = get_cached_file(url, nil, msg.chat.id, chat_action)
if not file then return end
2016-06-14 15:25:53 +02:00
if ext == 'gif' then
result = utilities.send_document(receiver, file, nil, msg.message_id)
elseif ext == 'ogg' then
result = utilities.send_voice(receiver, file, nil, msg.message_id)
2016-06-14 15:25:53 +02:00
elseif mime_type == 'audio' then
result = utilities.send_audio(receiver, file, nil, msg.message_id)
2016-06-14 15:25:53 +02:00
elseif mime_type == 'video' then
result = utilities.send_video(receiver, file, nil, msg.message_id)
2016-06-14 15:25:53 +02:00
else
result = utilities.send_document(receiver, file, nil, msg.message_id)
2016-06-14 15:25:53 +02:00
end
if nocache then return end
if not result then return end
-- Cache File-ID und Last-Modified-Header in Redis
cache_file(result, url, last_modified)
2016-06-14 15:25:53 +02:00
end
return media