Neue Plugins: copypasta.lua & instagram.lua
This commit is contained in:
parent
0334188aab
commit
5b09f7dba0
125
miku/plugins/copypasta.lua
Normal file
125
miku/plugins/copypasta.lua
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
local pasta = {}
|
||||||
|
|
||||||
|
function pasta:init(config)
|
||||||
|
pasta.triggers = {
|
||||||
|
"^/(delpasta) (.+)$",
|
||||||
|
"^/(addpasta) (.+)$",
|
||||||
|
"^/(pasta)$",
|
||||||
|
"^/(listpasta)$",
|
||||||
|
"^/(delpasta)$"
|
||||||
|
}
|
||||||
|
pasta.doc = [[*
|
||||||
|
]]..config.cmd_pat..[[addpasta* _<Zitat>_: Fügt Zitat hinzu.
|
||||||
|
*]]..config.cmd_pat..[[delpasta* _<Zitat>_: Löscht das Zitat (nur Superuser)
|
||||||
|
*]]..config.cmd_pat..[[pasta*: Gibt zufälliges Zitat aus
|
||||||
|
*]]..config.cmd_pat..[[listpasta*: Listet alle Zitate auf
|
||||||
|
]]
|
||||||
|
end
|
||||||
|
|
||||||
|
pasta.command = 'pasta'
|
||||||
|
|
||||||
|
local hash = 'telegram:pasta'
|
||||||
|
|
||||||
|
function pasta:save_pasta(text)
|
||||||
|
local copypasta = text:sub(11)
|
||||||
|
print('Saving pasta to redis set '..hash)
|
||||||
|
redis:sadd(hash, copypasta)
|
||||||
|
return '*Gespeichert!*'
|
||||||
|
end
|
||||||
|
|
||||||
|
function pasta:delete_pasta(text)
|
||||||
|
local copypasta = text:sub(11)
|
||||||
|
if redis:sismember(hash, quote) == true then
|
||||||
|
print('Deleting pasta from redis set '..hash)
|
||||||
|
redis:srem(hash, quote)
|
||||||
|
return '*Copypasta erfolgreich gelöscht!*'
|
||||||
|
else
|
||||||
|
return 'Diese Copypasta existiert nicht.'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function pasta:get_pasta()
|
||||||
|
print('Getting pasta from redis set '..hash)
|
||||||
|
local pasta_table = redis:smembers(hash)
|
||||||
|
if not pasta_table[1] then
|
||||||
|
return 'Es wurden noch keine Copypastas gespeichert.\nSpeichere doch welche mit /addpasta [Zitat]'
|
||||||
|
else
|
||||||
|
return pasta_table[math.random(1,#pasta_table)]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function pasta:callback(callback, msg, self, config)
|
||||||
|
print('Getting all pastas from redis set '..hash)
|
||||||
|
local pasta_table = redis:smembers(hash)
|
||||||
|
local text = ""
|
||||||
|
|
||||||
|
for num,quote in pairs(pasta_table) do
|
||||||
|
text = text..num..") "..quote..'\n'
|
||||||
|
end
|
||||||
|
|
||||||
|
if not text or text == "" then
|
||||||
|
utilities.answer_callback_query(callback, 'Es wurden noch keine Copypastas gespeichert.', true)
|
||||||
|
else
|
||||||
|
-- In case the copypasta list is > 4096 chars
|
||||||
|
local text_len = string.len(text)
|
||||||
|
|
||||||
|
while text_len > 4096 do
|
||||||
|
to_send_text = string.sub(text, 1, 4096)
|
||||||
|
text = string.sub(text, 4096, text_len)
|
||||||
|
local res = utilities.send_message(callback.from.id, to_send_text, true)
|
||||||
|
|
||||||
|
if not res then
|
||||||
|
utilities.answer_callback_query(callback, 'Bitte starte den Bot zuerst privat!', true)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
text_len = string.len(text)
|
||||||
|
end
|
||||||
|
|
||||||
|
local res = utilities.send_message(callback.from.id, text, true)
|
||||||
|
|
||||||
|
if not res then
|
||||||
|
utilities.answer_callback_query(callback, 'Bitte starte den Bot zuerst privat!', true)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
utilities.answer_callback_query(callback, 'Pastas per PN verschickt')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function pasta:action(msg, config, matches)
|
||||||
|
if msg.chat.type == 'private' then
|
||||||
|
utilities.send_reply(msg, 'Dieses Plugin kann nur in Gruppen verwendet werden!')
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if matches[1] == "pasta" then
|
||||||
|
utilities.send_message(msg.chat.id, pasta:get_pasta(), true, nil, false)
|
||||||
|
return
|
||||||
|
elseif matches[1] == "addpasta" and matches[2] then
|
||||||
|
utilities.send_reply(msg, pasta:save_pasta(msg.text), true)
|
||||||
|
return
|
||||||
|
elseif matches[1] == "delpasta" and matches[2] then
|
||||||
|
if not is_sudo(msg, config) then
|
||||||
|
utilities.send_reply(msg, config.errors.sudo)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
utilities.send_reply(msg, pasta:delete_pasta(msg.text), true)
|
||||||
|
return
|
||||||
|
elseif matches[1] == "delpasta" and not matches[2] then
|
||||||
|
if not is_sudo(msg, config) then
|
||||||
|
utilities.send_reply(msg, config.errors.sudo)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if msg.reply_to_message then
|
||||||
|
local text = msg.reply_to_message.text
|
||||||
|
utilities.send_reply(msg, pasta:delete_pasta(text), true)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
elseif matches[1] == "listpasta" then
|
||||||
|
utilities.send_reply(msg, 'Bitte klicke hier unten auf diese attraktive Schaltfläche.', false, '{"inline_keyboard":[[{"text":"Alle Zitate per PN","callback_data":"copypasta:"}]]}')
|
||||||
|
return
|
||||||
|
end
|
||||||
|
utilities.send_reply(msg, pasta.doc, true)
|
||||||
|
end
|
||||||
|
|
||||||
|
return pasta
|
48
miku/plugins/instagram.lua
Normal file
48
miku/plugins/instagram.lua
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
local instagram = {}
|
||||||
|
|
||||||
|
function instagram:init(config)
|
||||||
|
instagram.triggers = {
|
||||||
|
"https?://www.instagram.com/p/(.*)"
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
function instagram:get_instagram(url)
|
||||||
|
local api_key = cred_data.iframely_api_key
|
||||||
|
local res, code = https.request('https://iframe.ly/api/oembed?url=https://www.instagram.com/p/'..URL.escape(url)..'&api_key='..api_key)
|
||||||
|
if code ~= 200 then return end
|
||||||
|
local data = json.decode(res)
|
||||||
|
|
||||||
|
if data.title then
|
||||||
|
title = data.title:gsub('"', '\\"')
|
||||||
|
else
|
||||||
|
title = 'Kein Titel'
|
||||||
|
end
|
||||||
|
|
||||||
|
if data.description then
|
||||||
|
description = data.description:gsub('"', '\\"')
|
||||||
|
description_in_text = '\n'..description
|
||||||
|
else
|
||||||
|
description_in_text = ''
|
||||||
|
description = 'Keine Beschreibung verfügbar'
|
||||||
|
end
|
||||||
|
|
||||||
|
local pic = data.thumbnail_url
|
||||||
|
local text = title..'\n'..description_in_text
|
||||||
|
|
||||||
|
return pic, text
|
||||||
|
end
|
||||||
|
|
||||||
|
function instagram:action(msg, config, matches)
|
||||||
|
local url = matches[1]
|
||||||
|
local pic, text = instagram:get_instagram(url)
|
||||||
|
|
||||||
|
if not url then
|
||||||
|
utilities.send_reply(msg, 'Fehler')
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
utilities.send_typing(msg.chat.id, 'upload_photo')
|
||||||
|
utilities.send_photo(msg.chat.id, pic, text, msg.message_id)
|
||||||
|
end
|
||||||
|
|
||||||
|
return instagram
|
Reference in New Issue
Block a user