diff --git a/miku/bot.lua b/miku/bot.lua index d0f2e74..3a93fe6 100644 --- a/miku/bot.lua +++ b/miku/bot.lua @@ -114,7 +114,7 @@ function bot:on_callback_receive(callback, msg, config) -- whenever a new callba -- vardump(callback) if not callback.data:find(':') then - utilities.answer_callback_query(callback, 'Ungültiger CallbackQuery: Kein Parameter.') + utilities.answer_callback_query(callback, 'Ungültiger CallbackQuery: Kein Parameter.', true) return end @@ -168,7 +168,7 @@ function bot:on_callback_receive(callback, msg, config) -- whenever a new callba -- Check if plugin is disabled on this chat if msg then if is_plugin_disabled_on_chat(plugin.name, msg) then - utilities.answer_callback_query(callback, 'Plugin wurde in diesem Chat deaktiviert.') + utilities.answer_callback_query(callback, 'Plugin wurde in diesem Chat deaktiviert.', true) return end end @@ -177,13 +177,13 @@ function bot:on_callback_receive(callback, msg, config) -- whenever a new callba plugin:callback(callback, msg, self, config, param) return else - utilities.answer_callback_query(callback, 'Ungültiger CallbackQuery: Plugin unterstützt keine Callbacks.') + utilities.answer_callback_query(callback, 'Ungültiger CallbackQuery: Plugin unterstützt keine Callbacks.', true) return end end end - utilities.answer_callback_query(callback, 'Ungültiger CallbackQuery: Kein Plugin gefunden.') + utilities.answer_callback_query(callback, 'Ungültiger CallbackQuery: Kein Plugin gefunden.', true) end -- NOTE: To enable InlineQuerys, send /setinline to @BotFather diff --git a/miku/plugins/creds.lua b/miku/plugins/creds.lua index e9a0790..5d66e11 100644 --- a/miku/plugins/creds.lua +++ b/miku/plugins/creds.lua @@ -87,6 +87,11 @@ function creds_manager:rename_creds(var, newvar) end end +function creds_manager:callback(callback, msg, self, config) + utilities.answer_callback_query(callback) + utilities.delete_message(msg.chat.id, msg.message_id) +end + function creds_manager:action(msg, config, matches) local receiver = msg.from.id if not is_sudo(msg, config) then @@ -100,7 +105,7 @@ function creds_manager:action(msg, config, matches) end if matches[1] == "/creds" then - utilities.send_reply(msg, creds_manager:list_creds()) + utilities.send_reply(msg, creds_manager:list_creds(), false, '{"inline_keyboard":[[{"text":"Keys verbergen","callback_data":"creds:"}]]}') return elseif matches[1] == "/creds add" then local var = string.lower(string.sub(matches[2], 1, 50)) diff --git a/miku/plugins/flickr.lua b/miku/plugins/flickr.lua index 4de6f23..a7a5ec6 100644 --- a/miku/plugins/flickr.lua +++ b/miku/plugins/flickr.lua @@ -43,11 +43,12 @@ function flickr:send_flickr_photo_data(data) return text, image_url end else - return '"'..title..'", aufgenommen '..taken..' von '..username..' ('..data.views..' Aufrufe)\nBild konnte nicht gedownloadet werden (Keine Berechtigung)' + return ''..title..', aufgenommen '..taken..' von '..username..' ('..data.views..' Aufrufe)\nBild konnte nicht gedownloadet werden (Keine Berechtigung)' end end function flickr:action(msg, config, matches) + utilities.send_typing(msg.chat.id, 'upload_photo') local data = flickr:get_flickr_photo_data(matches[2]) if not data then utilities.send_reply(msg, config.errors.connection) return end local text, image_url, isgif = flickr:send_flickr_photo_data(data) @@ -63,7 +64,7 @@ function flickr:action(msg, config, matches) return end else - utilities.send_reply(msg, text) + utilities.send_reply(msg, text, 'HTML') return end end diff --git a/miku/plugins/flickr_search.lua b/miku/plugins/flickr_search.lua index 587c79f..7b0335f 100644 --- a/miku/plugins/flickr_search.lua +++ b/miku/plugins/flickr_search.lua @@ -2,8 +2,8 @@ local flickr_search = {} function flickr_search:init(config) if not cred_data.flickr_apikey then - print('Fehlender Key: flickr_apikey.') - print('flickr_search.lua wird nicht aktiviert.') + print('Missing config value: flickr_apikey.') + print('flickr_search.lua will not be enabled.') return end @@ -17,30 +17,55 @@ flickr_search.command = 'flickr ' local apikey = cred_data.flickr_apikey local BASE_URL = 'https://api.flickr.com/services/rest' -function flickr_search:get_flickr (term) - local url = BASE_URL..'/?method=flickr.photos.search&api_key='..apikey..'&format=json&nojsoncallback=1&privacy_filter=1&safe_search=3&extras=url_o&text='..term +function flickr_search:get_flickr(term) + local url = BASE_URL..'/?method=flickr.photos.search&api_key='..apikey..'&format=json&nojsoncallback=1&privacy_filter=1&safe_search=3&media=photos&sort=relevance&is_common=true&per_page=20&extras=url_l,url_o&text='..term local b,c = https.request(url) if c ~= 200 then return nil end local photo = json.decode(b).photos.photo + if not photo[1] then return nil end + -- truly randomize math.randomseed(os.time()) -- random max json table size local i = math.random(#photo) - local link_image = photo[i].url_o - return link_image + + local link_image = photo[i].url_l or photo[i].url_o + local orig_image = photo[i].url_o or link_image + local title = photo[i].title + if title:len() > 200 then + title = title:sub(1, 197) .. '...' + end + + return link_image, title, orig_image +end + +function flickr_search:callback(callback, msg, self, config, input) + utilities.send_typing(msg.chat.id, 'upload_photo') + local input = URL.unescape(input) + utilities.answer_callback_query(callback, 'Suche nochmal nach "'..input..'"') + local url, title, orig = flickr_search:get_flickr(input) + + if not url then utilities.answer_callback_query(callback, 'Konnte nicht mit Flickr verbinden :(', true) return end + + if string.ends(url, ".gif") then + utilities.send_document(msg.chat.id, url, title, msg.message_id, '{"inline_keyboard":[[{"text":"Im Browser öffnen","url":"'..orig..'"},{"text":"Nochmal suchen","callback_data":"flickr_search:'..URL.escape(input)..'"}]]}') + return + else + utilities.send_photo(msg.chat.id, url, title, msg.message_id, '{"inline_keyboard":[[{"text":"Bild öffnen","url":"'..orig..'"}, {"text":"Nochmal suchen","callback_data":"flickr_search:'..URL.escape(input)..'"}]]}') + return + end end function flickr_search:action(msg, config, matches) - local url = flickr_search:get_flickr(matches[1]) + utilities.send_typing(msg.chat.id, 'upload_photo') + local url, title, orig = flickr_search:get_flickr(matches[1]) if not url then utilities.send_reply(msg, config.errors.results) return end - - local file = download_to_file(url) if string.ends(url, ".gif") then - utilities.send_document(msg.chat.id, file, url) + utilities.send_document(msg.chat.id, url, title, msg.message_id, '{"inline_keyboard":[[{"text":"Im Browser öffnen","url":"'..orig..'"},{"text":"Nochmal suchen","callback_data":"flickr_search:'..URL.escape(matches[1])..'"}]]}') return else - utilities.send_photo(msg.chat.id, file, url) + utilities.send_photo(msg.chat.id, url, title, msg.message_id, '{"inline_keyboard":[[{"text":"Bild öffnen","url":"'..orig..'"}, {"text":"Nochmal suchen","callback_data":"flickr_search:'..URL.escape(matches[1])..'"}]]}') return end end diff --git a/miku/plugins/pixabay.lua b/miku/plugins/pixabay.lua index b9a3b3c..0f5201a 100644 --- a/miku/plugins/pixabay.lua +++ b/miku/plugins/pixabay.lua @@ -83,7 +83,27 @@ function pixabay:get_pixabay(term) return image_url, full_url, page_url, user, tags end +function pixabay:callback(callback, msg, self, config, input) + utilities.send_typing(msg.chat.id, 'upload_photo') + local input = URL.unescape(input) + + local url, full_url, page_url, user, tags = pixabay:get_pixabay(input) + + if not url then + utilities.answer_callback_query(callback, 'Verbindung mit Pixabay fehlgeschlagen :(', true) + return + elseif url == 'NOPIX' then + utilities.answer_callback_query(callback, 'Keine Ergebnisse gefunden!', true) + return + else + utilities.answer_callback_query(callback, 'Suche nochmal nach "'..input..'"') + local text = '"'..tags..'" von '..user + utilities.send_photo(msg.chat.id, url, text, msg.message_id, '{"inline_keyboard":[[{"text":"Seite aufrufen","url":"'..page_url..'"},{"text":"Volles Bild (Login)","url":"'..full_url..'"},{"text":"Nochmal suchen","callback_data":"pixabay:'..URL.escape(input)..'"}]]}') + end +end + function pixabay:action(msg, config, matches) + utilities.send_typing(msg.chat.id, 'upload_photo') local term = matches[1] if matches[2] then if redis:exists("telegram:cache:pixabay:"..matches[2]) == true then -- if cached @@ -96,19 +116,23 @@ function pixabay:action(msg, config, matches) else url, full_url, page_url, user, tags = pixabay:get_pixabay_directlink(matches[2]) end + callback_button = '' else url, full_url, page_url, user, tags = pixabay:get_pixabay(term) + callback_button = ',{"text":"Nochmal suchen","callback_data":"pixabay:'..URL.escape(matches[1])..'"}' end - if url == 'NOPIX' then + if not url then + utilities.send_reply(msg, config.errors.connection) + return + elseif url == 'NOPIX' then utilities.send_reply(msg, config.errors.results) return else - utilities.send_typing(msg.chat.id, 'upload_photo') local text = '"'..tags..'" von '..user - utilities.send_photo(msg.chat.id, url, text, msg.message_id, '{"inline_keyboard":[[{"text":"Seite aufrufen","url":"'..page_url..'"},{"text":"Volles Bild (Login notwendig)","url":"'..full_url..'"}]]}') + utilities.send_photo(msg.chat.id, url, text, msg.message_id, '{"inline_keyboard":[[{"text":"Seite aufrufen","url":"'..page_url..'"},{"text":"Volles Bild (Login)","url":"'..full_url..'"}'..callback_button..']]}') return end end -return pixabay +return pixabay \ No newline at end of file