diff --git a/miku/bot.lua b/miku/bot.lua index e0ba92a..eca5e6c 100644 --- a/miku/bot.lua +++ b/miku/bot.lua @@ -311,7 +311,6 @@ function create_plugin_set() 'channels', 'plugins', 'help', - 'greetings' } print ('Aktiviere Plugins und speicher in telegram:enabled_plugins') for _,plugin in pairs(enabled_plugins) do diff --git a/miku/plugins/9gag.lua b/miku/plugins/9gag.lua index d843898..a312377 100644 --- a/miku/plugins/9gag.lua +++ b/miku/plugins/9gag.lua @@ -9,9 +9,12 @@ local bindings = require('miku.bindings') ninegag.command = '9gag' function ninegag:init(config) - ninegag.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('9gag', true):t('9fag', true).table + ninegag.triggers = { + "^/9[Gg][Aa][Gg]$", + "^/9[Ff][Aa][Gg]$" + } ninegag.inline_triggers = { - "^9gag" + "^9[Gg][Aa][Gg]" } ninegag.doc = [[* ]]..config.cmd_pat..[[9gag*: Gibt ein zufälliges Bild von den momentan populärsten 9GAG-Posts aus]] diff --git a/miku/plugins/about.lua b/miku/plugins/about.lua index be8dd34..4be0cd4 100644 --- a/miku/plugins/about.lua +++ b/miku/plugins/about.lua @@ -7,8 +7,8 @@ about.command = 'about' about.doc = '`Sendet Informationen über den Bot.`' about.triggers = { - '/about', - '/start' + '/[Aa][Bb][Oo][Uu][Tt]', + '/[Ss][Tt][Aa][Rr][Tt]' } function about:action(msg, config) diff --git a/miku/plugins/afk.lua b/miku/plugins/afk.lua index 96fb6ff..496976c 100644 --- a/miku/plugins/afk.lua +++ b/miku/plugins/afk.lua @@ -8,8 +8,8 @@ local redis = (loadfile "./miku/redis.lua")() function afk:init(config) afk.triggers = { - "^/([A|a][F|f][K|k])$", - "^/([A|a][F|f][K|k]) (.*)$" + "^/([Aa][Ff][Kk])$", + "^/([Aa][Ff][Kk]) (.*)$" } afk.doc = [[* ]]..config.cmd_pat..[[afk* _[Text]_: Setzt Status auf AFK mit optionalem Text]] @@ -41,7 +41,7 @@ function afk:switch_afk(user_name, user_id, chat_id, timestamp, text) if afk:is_offline(hash) then local afk_text = afk:get_afk_text(hash) if afk_text then - return 'Du bist bereits AFK ('..afk_text..')!' + return 'Du bist bereits AFK! ('..afk_text..')' else return 'Du bist bereits AFK!' end @@ -55,9 +55,9 @@ function afk:switch_afk(user_name, user_id, chat_id, timestamp, text) if text then print('Setting redis hash afk_text in '..hash..' to '..text) redis:hset(hash, 'afk_text', text) - return user_name..' ist AFK ('..text..')' + return user_name..' ist AFK! ('..text..')' else - return user_name..' ist AFK' + return user_name..' ist AFK!' end end @@ -97,9 +97,9 @@ function afk:pre_process(msg, self) redis:hset(hash, 'afk_text', false) local afk_text = afk_text:gsub("%*","") local afk_text = afk_text:gsub("_","") - utilities.send_message(self, msg.chat.id, user_name..' ist wieder da (war: *'..afk_text..'* für '..duration..')!', true, nil, true) + utilities.send_message(self, msg.chat.id, user_name..' ist wieder da! (war: *'..afk_text..'* für '..duration..')', true, nil, true) else - utilities.send_message(self, msg.chat.id, user_name..' ist wieder da (war '..duration..' weg)!') + utilities.send_message(self, msg.chat.id, user_name..' ist wieder da! (war '..duration..' weg)') end end @@ -108,7 +108,7 @@ end function afk:action(msg) if msg.chat.type == "private" then - utilities.send_reply(self, msg, "Mir ist's egal, ob du AFK bist ._.") + utilities.send_reply(self, msg, "Mir ist's egal, ob du AFK bist.") return end diff --git a/miku/plugins/app_store.lua b/miku/plugins/app_store.lua index 0568d59..111709f 100644 --- a/miku/plugins/app_store.lua +++ b/miku/plugins/app_store.lua @@ -7,7 +7,7 @@ local redis = (loadfile "./miku/redis.lua")() app_store.triggers = { "itunes.apple.com/(.*)/app/(.*)/id(%d+)", - "^/itunes (%d+)$", + "^/[Ii][Tt][Uu][Nn][Ee][Ss] (%d+)$", "itunes.apple.com/app/id(%d+)" } diff --git a/miku/plugins/bImages.lua b/miku/plugins/bImages.lua index 0015216..1532978 100644 --- a/miku/plugins/bImages.lua +++ b/miku/plugins/bImages.lua @@ -17,7 +17,7 @@ function bImages:init(config) bImages.triggers = {"^/nil$"} bImages.inline_triggers = { - "^b (.*)" + "^[Ii][Mm][Gg] (.*)" } end diff --git a/miku/plugins/bitly_create.lua b/miku/plugins/bitly_create.lua index db23436..55f55c8 100644 --- a/miku/plugins/bitly_create.lua +++ b/miku/plugins/bitly_create.lua @@ -25,14 +25,14 @@ function bitly_create:init(config) end bitly_create.triggers = { - "^/short(auth)(.+)$", - "^/short (auth)$", - "^/short (unauth)$", - "^/short (me)$", - "^/short (j.mp) (https?://[%w-_%.%?%.:/%+=&]+)$", - "^/short (bit.ly) (https?://[%w-_%.%?%.:/%+=&]+)$", - "^/short (bitly.com) (https?://[%w-_%.%?%.:/%+=&]+)$", - "^/short (https?://[%w-_%.%?%.:/%+=&]+)$" + "^/[Ss][Hh][Oo][Rr][Tt](auth)(.+)$", + "^/[Ss][Hh][Oo][Rr][Tt] (auth)$", + "^/[Ss][Hh][Oo][Rr][Tt] (unauth)$", + "^/[Ss][Hh][Oo][Rr][Tt] (me)$", + "^/[Ss][Hh][Oo][Rr][Tt] (j.mp) (https?://[%w-_%.%?%.:/%+=&]+)$", + "^/[Ss][Hh][Oo][Rr][Tt] (bit.ly) (https?://[%w-_%.%?%.:/%+=&]+)$", + "^/[Ss][Hh][Oo][Rr][Tt] (bitly.com) (https?://[%w-_%.%?%.:/%+=&]+)$", + "^/[Ss][Hh][Oo][Rr][Tt] (https?://[%w-_%.%?%.:/%+=&]+)$" } bitly_create.doc = [[* ]]..config.cmd_pat..[[short* __: Kürzt einen Link mit der Standard Bitly-Adresse diff --git a/miku/plugins/btc.lua b/miku/plugins/btc.lua index e4a88fa..5db771d 100644 --- a/miku/plugins/btc.lua +++ b/miku/plugins/btc.lua @@ -8,7 +8,7 @@ local bindings = require('miku.bindings') function btc:init(config) btc.triggers = { - "^/btc$" + "^/[Bb][Tt][Cc]$" } btc.doc = [[* ]]..config.cmd_pat..[[btc*: Zeigt aktuellen Bitcoin-Kurs an]] diff --git a/miku/plugins/calc.lua b/miku/plugins/calc.lua index e1e5dbc..7e8519a 100644 --- a/miku/plugins/calc.lua +++ b/miku/plugins/calc.lua @@ -8,14 +8,14 @@ calc.command = 'calc ' function calc:init(config) calc.triggers = { - "^/calc (.*)$" + "^/[Cc][Aa][Ll][Cc] (.*)$" } calc.doc = [[* ]]..config.cmd_pat..[[calc* _[Ausdruck]_: Rechnet]] end function calc:mathjs(exp) - local exp = string.gsub(exp, ",", "%.") + local exp = string.gsub(exp, ",", ".") local url = 'http://api.mathjs.org/v1/' url = url..'?expr='..URL.escape(exp) local b,c = http.request(url) diff --git a/miku/plugins/cats.lua b/miku/plugins/cats.lua index bea66b2..919ac9f 100644 --- a/miku/plugins/cats.lua +++ b/miku/plugins/cats.lua @@ -3,7 +3,7 @@ local cats = {} local HTTP = require('socket.http') local utilities = require('miku.utilities') -cats.command = 'cat [gif]' +cats.command = 'kitty [gif]' function cats:init(config) if not cred_data.cat_apikey then @@ -12,13 +12,13 @@ function cats:init(config) end cats.triggers = { - "^/cat$", - "^/cat (gif)$" + "^/[Kk][Ii][Tt][Tt][Yy]$", + "^/[Kk][Ii][Tt][Tt][Yy] (gif)$" } cats.doc = [[* -]]..config.cmd_pat..[[cat*: Postet eine zufällige Katze -*]]..config.cmd_pat..[[cat* _gif_: Postet eine zufällige, animierte Katze]] +]]..config.cmd_pat..[[kitty*: Postet eine zufällige Katze +*]]..config.cmd_pat..[[kitty* _gif_: Postet eine zufällige, animierte Katze]] end diff --git a/miku/plugins/channels.lua b/miku/plugins/channels.lua index beb77e8..dccf6fe 100644 --- a/miku/plugins/channels.lua +++ b/miku/plugins/channels.lua @@ -8,8 +8,8 @@ channels.command = 'channel ' function channels:init(config) channels.triggers = { - "^/channel? (enable)", - "^/channel? (disable)" + "^/[Cc][Hh][Aa][Nn][Nn][Ee][Ll] (enable)", + "^/[Cc][Hh][Aa][Nn][Nn][Ee][Ll] (disable)" } channels.doc = [[* ]]..config.cmd_pat..[[channel* __/__: Aktiviert/deaktiviert den Bot im Chat]] diff --git a/miku/plugins/cleverbot.lua b/miku/plugins/cleverbot.lua index 743085c..790a19c 100644 --- a/miku/plugins/cleverbot.lua +++ b/miku/plugins/cleverbot.lua @@ -7,7 +7,7 @@ local json = require('dkjson') function cleverbot:init(config) cleverbot.triggers = { - "^/cbot (.*)$" + "^/[Cc][Bb][Oo][Tt] (.*)$" } cleverbot.doc = [[* diff --git a/miku/plugins/currency.lua b/miku/plugins/currency.lua index 71ddcf8..67f3c28 100644 --- a/miku/plugins/currency.lua +++ b/miku/plugins/currency.lua @@ -7,10 +7,10 @@ currency.command = 'cash [Menge] ' function currency:init(config) currency.triggers = { - "^/cash ([A-Za-z]+)$", - "^/cash ([A-Za-z]+) ([A-Za-z]+)$", - "^/cash (%d+[%d%.,]*) ([A-Za-z]+) ([A-Za-z]+)$", - "^(/eur)$" + "^/[Cc][Aa][Ss][Hh] ([A-Za-z]+)$", + "^/[Cc][Aa][Ss][Hh] ([A-Za-z]+) ([A-Za-z]+)$", + "^/[Cc][Aa][Ss][Hh] (%d+[%d%.,]*) ([A-Za-z]+) ([A-Za-z]+)$", + "^(/[Ee][Uu][Rr])$" } currency.doc = [[* ]]..config.cmd_pat..[[cash* _[Menge]_ __ __ diff --git a/miku/plugins/dhl.lua b/miku/plugins/dhl.lua index 806bae3..4aca7be 100644 --- a/miku/plugins/dhl.lua +++ b/miku/plugins/dhl.lua @@ -6,7 +6,7 @@ local utilities = require('miku.utilities') function dhl:init(config) dhl.triggers = { - "/dhl (%d+)$" + "/[Dd][Hh][Ll] (%d+)$" } dhl.doc = [[* ]]..config.cmd_pat..[[dhl* __: Aktueller Status der Sendung]] diff --git a/miku/plugins/echo.lua b/miku/plugins/echo.lua index e5f1883..f67e992 100644 --- a/miku/plugins/echo.lua +++ b/miku/plugins/echo.lua @@ -5,9 +5,10 @@ local utilities = require('miku.utilities') echo.command = 'echo ' function echo:init(config) - echo.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('echo', true).table + echo.triggers = {"/[Ee][Cc][Hh][Oo] (.*)$"} echo.inline_triggers = { - "^e (.*)" + "^echo (.*)", + "^bold (.*)" } echo.doc = [[* ]]..config.cmd_pat..[[echo* __: Gibt den Text aus]] diff --git a/miku/plugins/expand.lua b/miku/plugins/expand.lua index 476ef2f..2f2c735 100644 --- a/miku/plugins/expand.lua +++ b/miku/plugins/expand.lua @@ -5,7 +5,7 @@ local utilities = require('miku.utilities') function expand:init(config) expand.triggers = { - "^/expand (https?://[%w-_%.%?%.:/%+=&]+)$" + "^/[Ee][Xx][Pp][Aa][Nn][Dd] (https?://[%w-_%.%?%.:/%+=&]+)$" } expand.inline_triggers = { "^ex (https?://[%w-_%.%?%.:/%+=&]+)$" diff --git a/miku/plugins/fefe.lua b/miku/plugins/fefe.lua deleted file mode 100644 index a4b3911..0000000 --- a/miku/plugins/fefe.lua +++ /dev/null @@ -1,36 +0,0 @@ -local fefe = {} - -local https = require('ssl.https') -local json = require('dkjson') -local utilities = require('miku.utilities') - -fefe.triggers = { - "blog.fefe.de/%?ts=%w%w%w%w%w%w%w%w" -} - -function fefe:post(id) - local url = 'http://'..id - local results, code = https.request(url) - if code ~= 200 then return "HTTP-Fehler" end - if string.match(results, "No entries found.") then return "Eintrag nicht gefunden." end - - local line = string.sub( results, string.find(results, "
  • %[l]", "") - -- replace "

    " with newline; "" and "" with "*" - local text = text:gsub("

    ", "\n\n"):gsub("

    ", "\n\n") - local text = text:gsub("", "*"):gsub("", "*") - local text = text:gsub("", "_"):gsub("", "_") - -- format quotes and links markdown-like - local text = text:gsub("", ")["):gsub("", "]") - local text = text:gsub("

    ", "\n\n> "):gsub("
    ", "\n\n") - - return text -end - -function fefe:action(msg, config, matches) - utilities.send_reply(self, msg, fefe:post(matches[1])) -end - -return fefe diff --git a/miku/plugins/gImages.lua b/miku/plugins/gImages.lua index ebe1c46..e2f5f7f 100644 --- a/miku/plugins/gImages.lua +++ b/miku/plugins/gImages.lua @@ -22,7 +22,10 @@ function gImages:init(config) return end - gImages.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('img', true):t('i', true).table + gImages.triggers = { + "^/[Ii][Mm][Gg] (.*)$", + "^/[Ii] (.*)$" + } gImages.doc = [[* ]]..config.cmd_pat..[[img* __ Sucht Bild mit Google und versendet es (SafeSearch aktiv) @@ -72,11 +75,11 @@ function gImages:callback(callback, msg, self, config, input) -- It's important to save the image with the right ending! if mimetype == 'image/gif' then - file = download_to_file(img_url, 'img.gif') + file = download_to_file(img_url) elseif mimetype == 'image/png' then - file = download_to_file(img_url, 'img.png') + file = download_to_file(img_url) elseif mimetype == 'image/jpeg' then - file = download_to_file(img_url, 'img.jpg') + file = download_to_file(img_url) else file = nil end diff --git a/miku/plugins/gImages_nsfw.lua b/miku/plugins/gImages_nsfw.lua new file mode 100644 index 0000000..94f977e --- /dev/null +++ b/miku/plugins/gImages_nsfw.lua @@ -0,0 +1,245 @@ + -- You need a Google API key and a Google Custom Search Engine set up to use this, in config.google_api_key and config.google_cse_key, respectively. + -- You must also sign up for the CSE in the Google Developer Console, and enable image results. + +local gImages_nsfw = {} + +local HTTPS = require('ssl.https') +HTTPS.timeout = 10 +local URL = require('socket.url') +local JSON = require('dkjson') +local redis = (loadfile "./miku/redis.lua")() +local utilities = require('miku.utilities') +local bindings = require('miku.bindings') + +function gImages_nsfw:init(config) + if not cred_data.google_apikey then + print('Missing config value: google_apikey.') + print('gImages_nsfw.lua will not be enabled.') + return + elseif not cred_data.google_cse_id then + print('Missing config value: google_cse_id.') + print('gImages_nsfw.lua will not be enabled.') + return + end + + gImages_nsfw.triggers = { + "^/[Ii][Mm][Gg]2 (.*)$", + "^/[Ii]2 (.*)$" + } + gImages_nsfw.doc = [[* +]]..config.cmd_pat..[[img2* __ +Sucht Bild mit Google und versendet es +Alias: *]]..config.cmd_pat..[[i2*]] +end + +gImages_nsfw.command = 'img2 ' + +-- Yes, the callback is copied from below, but I can't think of another method :\ +function gImages_nsfw:callback(callback, msg, self, config, input) + if not msg then return end + utilities.answer_callback_query(self, callback, 'Suche nochmal nach "'..URL.unescape(input)..'"') + utilities.send_typing(self, msg.chat.id, 'upload_photo') + local hash = 'telegram:cache:gImages_nsfw' + local results = redis:smembers(hash..':'..string.lower(URL.unescape(input))) + + if not results[1] then + print('doing web request') + results = gImages_nsfw:get_image(input) + if results == 403 then + utilities.send_reply(self, msg, config.errors.quotaexceeded, true) + return + elseif not results then + utilities.send_reply(self, msg, config.errors.results, true) + return + end + gImages_nsfw:cache_result(results, input) + end + + -- Random image from table + local i = math.random(#results) + + -- Thanks to Amedeo for this! + local failed = true + local nofTries = 0 + + while failed and nofTries < #results do + if results[i].image then + img_url = results[i].link + mimetype = results[i].mime + context = results[i].image.contextLink + else -- from cache + img_url = results[i] + mimetype = redis:hget(hash..':'..img_url, 'mime') + context = redis:hget(hash..':'..img_url, 'contextLink') + end + + -- It's important to save the image with the right ending! + if mimetype == 'image/gif' then + file = download_to_file(img_url) + elseif mimetype == 'image/png' then + file = download_to_file(img_url) + elseif mimetype == 'image/jpeg' then + file = download_to_file(img_url) + else + file = nil + end + + if not file then + nofTries = nofTries + 1 + i = i+1 + if i > #results then + i = 1 + end + else + failed = false + end + + end + + if failed then + utilities.send_reply(self, msg, 'Fehler beim Herunterladen eines Bildes.', true, '{"inline_keyboard":[[{"text":"Nochmal versuchen","callback_data":"@'..self.info.username..' gImages_nsfw:'..input..'"}]]}') + return + end + + if mimetype == 'image/gif' then + result = utilities.send_document(self, msg.chat.id, file, nil, msg.message_id, '{"inline_keyboard":[[{"text":"Seite aufrufen","url":"'..context..'"},{"text":"Bild aufrufen","url":"'..img_url..'"},{"text":"Nochmal suchen","callback_data":"@'..self.info.username..' gImages_nsfw:'..input..'"}]]}') + else + result = utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id, '{"inline_keyboard":[[{"text":"Seite aufrufen","url":"'..context..'"},{"text":"Bild aufrufen","url":"'..img_url..'"},{"text":"Nochmal suchen","callback_data":"@'..self.info.username..' gImages_nsfw:'..input..'"}]]}') + end + + if not result then + utilities.send_reply(self, msg, config.errors.connection, true, '{"inline_keyboard":[[{"text":"Nochmal versuchen","callback_data":"@'..self.info.username..' gImages_nsfw:'..input..'"}]]}') + return + end +end + +function gImages_nsfw:get_image(input) + local apikey = cred_data.google_apikey -- 100 requests is RIDICULOUS, Google! + local cseid = cred_data.google_cse_id + local BASE_URL = 'https://www.googleapis.com/customsearch/v1' + local url = BASE_URL..'/?searchType=image&alt=json&num=10&key='..apikey..'&cx='..cseid..'&q=' .. input .. '&fields=items(link,mime,image(contextLink))' + local jstr, res = HTTPS.request(url) + local jdat = JSON.decode(jstr).items + + if not jdat then + return 'NORESULTS' + end + + if jdat.error then + if jdat.error.code == 403 then + return 403 + else + return false + end + end + + return jdat +end + +function gImages_nsfw:cache_result(results, text) + local cache = {} + for v in pairs(results) do + table.insert(cache, results[v].link) + end + for n, link in pairs(cache) do + redis:hset('telegram:cache:gImages_nsfw:'..link, 'mime', results[n].mime) + redis:hset('telegram:cache:gImages_nsfw:'..link, 'contextLink', results[n].image.contextLink) + redis:expire('telegram:cache:gImages_nsfw:'..link, 1209600) + end + cache_data('gImages_nsfw', string.lower(text), cache, 1209600, 'set') +end + +function gImages_nsfw:action(msg, config, matches) + local input = utilities.input(msg.text) + if not input then + if msg.reply_to_message and msg.reply_to_message.text then + input = msg.reply_to_message.text + else + utilities.send_message(self, msg.chat.id, gImages_nsfw.doc, true, msg.message_id, true) + return + end + end + + print ('Checking if search contains blacklisted word: '..input) + if is_blacklisted(input) then + utilities.send_reply(self, msg, 'Vergiss es! ._.') + return + end + + utilities.send_typing(self, msg.chat.id, 'upload_photo') + + local hash = 'telegram:cache:gImages_nsfw' + local results = redis:smembers(hash..':'..string.lower(input)) + + if not results[1] then + print('doing web request') + results = gImages_nsfw:get_image(URL.escape(input)) + if results == 403 then + utilities.send_reply(self, msg, config.errors.quotaexceeded, true) + return + elseif not results or results == 'NORESULTS' then + utilities.send_reply(self, msg, config.errors.results, true) + return + end + gImages_nsfw:cache_result(results, input) + end + + -- Random image from table + local i = math.random(#results) + + -- Thanks to Amedeo for this! + local failed = true + local nofTries = 0 + + while failed and nofTries < #results do + if results[i].image then + img_url = results[i].link + mimetype = results[i].mime + context = results[i].image.contextLink + else -- from cache + img_url = results[i] + mimetype = redis:hget(hash..':'..img_url, 'mime') + context = redis:hget(hash..':'..img_url, 'contextLink') + end + + -- It's important to save the image with the right ending! + if mimetype == 'image/gif' then + file = download_to_file(img_url, 'img.gif') + elseif mimetype == 'image/png' then + file = download_to_file(img_url, 'img.png') + elseif mimetype == 'image/jpeg' then + file = download_to_file(img_url, 'img.jpg') + else + file = nil + end + + if not file then + nofTries = nofTries + 1 + i = i+1 + if i > #results then + i = 1 + end + else + failed = false + end + + end + + if failed then + utilities.send_reply(self, msg, 'Fehler beim Herunterladen eines Bildes.', true, '{"inline_keyboard":[[{"text":"Nochmal versuchen","callback_data":"@'..self.info.username..' gImages_nsfw:'..URL.escape(input)..'"}]]}') + return + end + + if mimetype == 'image/gif' then + result = utilities.send_document(self, msg.chat.id, file, nil, msg.message_id, '{"inline_keyboard":[[{"text":"Seite aufrufen","url":"'..context..'"},{"text":"Bild aufrufen","url":"'..img_url..'"},{"text":"Nochmal suchen","callback_data":"@'..self.info.username..' gImages_nsfw:'..URL.escape(input)..'"}]]}') + else + result = utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id, '{"inline_keyboard":[[{"text":"Seite aufrufen","url":"'..context..'"},{"text":"Bild aufrufen","url":"'..img_url..'"},{"text":"Nochmal suchen","callback_data":"@'..self.info.username..' gImages_nsfw:'..URL.escape(input)..'"}]]}') + end + + if not result then + utilities.send_reply(self, msg, config.errors.connection, true, '{"inline_keyboard":[[{"text":"Nochmal versuchen","callback_data":"@'..self.info.username..' gImages_nsfw:'..URL.escape(input)..'"}]]}') + return + end +end + +return gImages_nsfw diff --git a/miku/plugins/gSearch.lua b/miku/plugins/gSearch.lua index 05ede88..99380ba 100644 --- a/miku/plugins/gSearch.lua +++ b/miku/plugins/gSearch.lua @@ -8,7 +8,7 @@ local utilities = require('miku.utilities') gSearch.command = 'google ' function gSearch:init(config) - gSearch.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('g', true):t('google', true):t('gnsfw', true).table + gSearch.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('g', true):t('google', true).table gSearch.doc = [[* ]]..config.cmd_pat..[[google* __: Sendet Suchergebnisse von Google Alias: _]]..config.cmd_pat..[[g_]] diff --git a/miku/plugins/games.lua b/miku/plugins/games.lua index 7ddc2e2..364de1d 100644 --- a/miku/plugins/games.lua +++ b/miku/plugins/games.lua @@ -10,7 +10,7 @@ games.command = 'game ' function games:init(config) games.triggers = { - "^/game (.+)$" + "^/[Gg][Aa][Mm][Ee] (.+)$" } games.doc = [[* ]]..config.cmd_pat..[[game*_ _: Sendet Infos zum Spiel]] @@ -42,12 +42,6 @@ function games:send_game_photo(result, self, msg) local BASE_URL = xml.find(result, 'baseImgUrl')[1] local images = {} - if xml.find(result, 'fanart') then - local fanart = xml.find(result, 'fanart')[1] - local fanrt_url = BASE_URL..fanart[1] - table.insert(images, fanrt_url) - end - if xml.find(result, 'boxart', 'side', 'front') then local boxart = xml.find(result, 'boxart', 'side', 'front')[1] local boxart_url = BASE_URL..boxart @@ -125,7 +119,7 @@ function games:send_game_data(game_id, self, msg) local text = '*'..title..'* für *'..platform..'*'..date..desc..genre..players..video..publisher utilities.send_reply(self, msg, text, true) - if xml.find(result, 'fanrt') or xml.find(result, 'boxart') then + if xml.find(result, 'boxart') then utilities.send_typing(self, msg.chat.id, 'upload_photo') games:send_game_photo(result, self, msg) end diff --git a/miku/plugins/get.lua b/miku/plugins/get.lua index e7ea079..73744bc 100644 --- a/miku/plugins/get.lua +++ b/miku/plugins/get.lua @@ -10,7 +10,7 @@ function get:init(config) get.doc = [[* ]]..config.cmd_pat..[[get*: Gibt alle Variablen aus *]]..config.cmd_pat..[[get* __: Gibt _Variable_ aus -Nutze `!set ` zum Setzen von Variablen]] +Nutze `/set ` zum Setzen von Variablen]] end function get:get_value(msg, var_name) diff --git a/miku/plugins/getfile.lua b/miku/plugins/getfile.lua index 5ce92a6..41d183b 100644 --- a/miku/plugins/getfile.lua +++ b/miku/plugins/getfile.lua @@ -32,7 +32,7 @@ function media_download:download_to_file_permanently(url, file_name) -- TODO: Save, when folder doesn't exist -- Create necessary folders in this folder! - local file_path = "/home/YOURPATH/tmp/"..file_name + local file_path = "tmp/"..file_name file = io.open(file_path, "w+") file:write(table.concat(respbody)) file:close() diff --git a/miku/plugins/golem.lua b/miku/plugins/golem.lua deleted file mode 100644 index e0aeec8..0000000 --- a/miku/plugins/golem.lua +++ /dev/null @@ -1,68 +0,0 @@ -local golem = {} - -local http = require('socket.http') -local json = require('dkjson') -local utilities = require('miku.utilities') -local bindings = require('miku.bindings') - -function golem:init(config) - if not cred_data.golem_apikey then - print('Missing config value: golem_apikey.') - print('golem.lua will not be enabled.') - return - end - - golem.triggers = { - "golem.de/news/([A-Za-z0-9-_-]+)-(%d+).html" - } -end - -local BASE_URL = 'http://api.golem.de/api' - -function golem:get_golem_data (article_identifier) - local apikey = cred_data.golem_apikey - local url = BASE_URL..'/article/meta/'..article_identifier..'/?key='..apikey..'&format=json' - local res,code = http.request(url) - if code ~= 200 then return "HTTP-FEHLER" end - local data = json.decode(res).data - - local url = BASE_URL..'/article/images/'..article_identifier..'/?key='..apikey..'&format=json' - local res,code = http.request(url) - if code ~= 200 then return "HTTP-FEHLER" end - local image_data = json.decode(res).data - return data, image_data -end - -function golem:send_golem_data(data, image_data) - local headline = '*'..data.headline..'*' - if data.subheadline ~= "" then - subheadline = '\n_'..data.subheadline..'_' - else - subheadline = "" - end - local subheadline = data.subheadline - local abstracttext = data.abstracttext - local text = headline..subheadline..'\n'..abstracttext - if image_data[1] then - image_url = image_data[1].native.url - else - image_url = data.leadimg.url - end - return text, image_url -end - -function golem:action(msg, config, matches) - local article_identifier = matches[2] - local data, image_data = golem:get_golem_data(article_identifier) - if not data and not image_data then utilities.send_reply(self, msg, config.errors.connection) return end - local text, image_url = golem:send_golem_data(data, image_data) - - if image_url then - utilities.send_typing(self, msg.chat.id, 'upload_photo') - local file = download_to_file(image_url) - utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id) - end - utilities.send_reply(self, msg, text, true) -end - -return golem \ No newline at end of file diff --git a/miku/plugins/gps.lua b/miku/plugins/gps.lua index 4c6c2ae..fcc2eb0 100644 --- a/miku/plugins/gps.lua +++ b/miku/plugins/gps.lua @@ -7,7 +7,7 @@ gps.command = 'gps ,' function gps:init(config) gps.triggers = { - "^/gps ([^,]*)[,%s]([^,]*)$", + "^/[Gg][Pp][Ss] ([^,]*)[,%s]([^,]*)$", "google.de/maps/@([^,]*)[,%s]([^,]*)", "google.com/maps/@([^,]*)[,%s]([^,]*)", "google.de/maps/place/@([^,]*)[,%s]([^,]*)", diff --git a/miku/plugins/greetings.lua b/miku/plugins/greetings.lua deleted file mode 100644 index c33693b..0000000 --- a/miku/plugins/greetings.lua +++ /dev/null @@ -1,63 +0,0 @@ - -- Put this on the bottom of your plugin list, after help.lua. - -- If you want to configure your own greetings, copy the following table - -- (without the "config.") to your config.lua file. - -local greetings = {} - -local utilities = require('miku.utilities') - -function greetings:init(config) - config.greetings = config.greetings or { - ['Hello, #NAME.'] = { - 'hello', - 'hey', - 'sup', - 'hi', - 'good morning', - 'good day', - 'good afternoon', - 'good evening' - }, - ['Goodbye, #NAME.'] = { - 'bye', - 'later', - 'see ya', - 'good night' - }, - ['Welcome back, #NAME.'] = { - 'i\'m home', - 'i\'m back' - }, - ['You\'re welcome, #NAME.'] = { - 'thanks', - 'thank you' - } - } - - greetings.triggers = { - self.info.first_name:lower() .. '%p*$' - } -end - -function greetings:action(msg, config) - - local nick = utilities.build_name(msg.from.first_name, msg.from.last_name) - if self.database.userdata[tostring(msg.from.id)] then - nick = self.database.userdata[tostring(msg.from.id)].nickname or nick - end - - for trigger,responses in pairs(config.greetings) do - for _,response in pairs(responses) do - if msg.text_lower:match(response..',? '..self.info.first_name:lower()) then - local output = utilities.char.zwnj .. trigger:gsub('#NAME', nick) - utilities.send_message(self, msg.chat.id, output) - return - end - end - end - - return true - -end - -return greetings diff --git a/miku/plugins/hackernews.lua b/miku/plugins/hackernews.lua deleted file mode 100644 index bb1558e..0000000 --- a/miku/plugins/hackernews.lua +++ /dev/null @@ -1,45 +0,0 @@ -local hackernews = {} - -local https = require('ssl.https') -local json = require('dkjson') -local URL = require('socket.url') -local utilities = require('miku.utilities') - -hackernews.triggers = { - "news.ycombinator.com/item%?id=(%d+)" -} - -local BASE_URL = 'https://hacker-news.firebaseio.com/v0' - -function hackernews:send_hackernews_post (hn_code) - local url = BASE_URL..'/item/'..hn_code..'.json' - local res,code = https.request(url) - if code ~= 200 then return "HTTP-FEHLER" end - local data = json.decode(res) - - local by = data.by - local title = data.title - - if data.url then - url = '\n[Link besuchen]('..data.url..')' - else - url = '' - end - - if data.text then - post = '\n'..unescape_html(data.text) - post = string.gsub(post, '

    ', ' ') - else - post = '' - end - local text = '*'..title..'* von _'..by..'_'..post..url - - return text -end - -function hackernews:action(msg, config, matches) - local hn_code = matches[1] - utilities.send_reply(self, msg, hackernews:send_hackernews_post(hn_code), true) -end - -return hackernews diff --git a/miku/plugins/heise.lua b/miku/plugins/heise.lua deleted file mode 100644 index 1fc085e..0000000 --- a/miku/plugins/heise.lua +++ /dev/null @@ -1,48 +0,0 @@ -local heise = {} - -local https = require('ssl.https') -local URL = require('socket.url') -local json = require('dkjson') -local utilities = require('miku.utilities') -local bindings = require('miku.bindings') - -heise.triggers = { - "heise.de/newsticker/meldung/(.*).html$" - } - -function heise:get_heise_article(article) - local url = 'https://query.yahooapis.com/v1/public/yql?q=select%20content,src,strong%20from%20html%20where%20url=%22http://www.heise.de/newsticker/meldung/'..article..'.html%22%20and%20xpath=%22//div[@id=%27mitte_news%27]/article/header/h2|//div[@id=%27mitte_news%27]/article/div/p[1]/strong|//div[@id=%27mitte_news%27]/article/div/figure/img%22&format=json' - local res,code = https.request(url) - local data = json.decode(res).query.results - if code ~= 200 then return "HTTP-Fehler" end - - local title = data.h2 - if data.strong then - teaser = '\n'..data.strong - else - teaser = '' - end - if data.img then - image_url = 'https:'..data.img.src - end - local text = '*'..title..'*'..teaser - - if data.img then - return text, image_url - else - return text - end -end - -function heise:action(msg, config, matches) - local article = URL.escape(matches[1]) - local text, image_url = heise:get_heise_article(article) - if image_url then - utilities.send_typing(self, msg.chat.id, 'upload_photo') - local file = download_to_file(image_url, 'heise_teaser.jpg') - utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id) - end - utilities.send_reply(self, msg, text, true) -end - -return heise \ No newline at end of file diff --git a/miku/plugins/hello.lua b/miku/plugins/hello.lua deleted file mode 100644 index 6ee0cd9..0000000 --- a/miku/plugins/hello.lua +++ /dev/null @@ -1,13 +0,0 @@ -local hello = {} - -local utilities = require('miku.utilities') - -hello.triggers = { - "^[Ss][Aa][Gg] [Hh][Aa][Ll][Ll][Oo] [Zz][Uu] (.*)$" -} - -function hello:action(msg, config, matches) - utilities.send_reply(self, msg, 'Hallo, '..matches[1]..'!') -end - -return hello diff --git a/miku/plugins/id.lua b/miku/plugins/id.lua index 9f435a7..0cbc974 100644 --- a/miku/plugins/id.lua +++ b/miku/plugins/id.lua @@ -11,10 +11,7 @@ function id:init(config) "^/id$", "^/ids? (chat)$" } - id.doc = [[``` -Returns user and chat info for you or the replied-to message. -Alias: ]]..config.cmd_pat..[[who -```]] + id.doc = [[```Zeige dir deine ID und die IDs aller Gruppenmitglieder an.``]] end function id:get_member_count(self, msg, chat_id) diff --git a/miku/plugins/ifttt.lua b/miku/plugins/ifttt.lua deleted file mode 100644 index b4dba17..0000000 --- a/miku/plugins/ifttt.lua +++ /dev/null @@ -1,80 +0,0 @@ -local ifttt = {} - -local https = require('ssl.https') -local URL = require('socket.url') -local redis = (loadfile "./miku/redis.lua")() -local utilities = require('miku.utilities') -local bindings = require('miku.bindings') - -function ifttt:init(config) - ifttt.triggers = { - "^/ifttt (!set) (.*)$", - "^/ifttt (!unauth)$", - "^/ifttt (.*)%&(.*)%&(.*)%&(.*)", - "^/ifttt (.*)%&(.*)%&(.*)", - "^/ifttt (.*)%&(.*)", - "^/ifttt (.*)$" - } - - ifttt.doc = [[* -]]..config.cmd_pat..[[ifttt* _!set_ __: Speichere deinen Schlüssel ein (erforderlich) -*]]..config.cmd_pat..[[ifttt* _!unauth_: Löscht deinen Account aus dem Bot -*]]..config.cmd_pat..[[ifttt* __&__&__&__: Führt [Event] mit den optionalen Parametern Value1, Value2 und Value3 aus -Beispiel: `/ifttt DeinFestgelegterName&Hallo&NochEinHallo`: Führt 'DeinFestgelegterName' mit den Parametern 'Hallo' und 'NochEinHallo' aus.]] -end - -ifttt.command = 'ifttt &&&' - -local BASE_URL = 'https://maker.ifttt.com/trigger' - -function ifttt:set_ifttt_key(hash, key) - print('Setting ifttt in redis hash '..hash..' to '..key) - redis:hset(hash, 'ifttt', key) - return '*Schlüssel eingespeichert!* Das Plugin kann jetzt verwendet werden.' -end - -function ifttt:do_ifttt_request(key, event, value1, value2, value3) - if not value1 then - url = BASE_URL..'/'..event..'/with/key/'..key - elseif not value2 then - url = BASE_URL..'/'..event..'/with/key/'..key..'/?value1='..URL.escape(value1) - elseif not value3 then - url = BASE_URL..'/'..event..'/with/key/'..key..'/?value1='..URL.escape(value1)..'&value2='..URL.escape(value2) - else - url = BASE_URL..'/'..event..'/with/key/'..key..'/?value1='..URL.escape(value1)..'&value2='..URL.escape(value2)..'&value3='..URL.escape(value3) - end - - local res,code = https.request(url) - if code ~= 200 then return "*Ein Fehler ist aufgetreten!* Aktion wurde nicht ausgeführt." end - - return "*Event \""..event.."\" getriggert!*" -end - -function ifttt:action(msg, config, matches) - local hash = 'user:'..msg.from.id - local key = redis:hget(hash, 'ifttt') - local event = matches[1] - local value1 = matches[2] - local value2 = matches[3] - local value3 = matches[4] - - if event == '!set' then - utilities.send_reply(self, msg, ifttt:set_ifttt_key(hash, value1), true) - return - end - - if not key then - utilities.send_reply(self, msg, '*Bitte speichere zuerst deinen Schlüssel ein!* Aktiviere dazu den [Maker Channel](https://ifttt.com/maker) und speichere deinen Schlüssel mit `/ifttt !set KEY` ein', true) - return - end - - if event == '!unauth' then - redis:hdel(hash, 'ifttt') - utilities.send_reply(self, msg, '*Erfolgreich ausgeloggt!*', true) - return - end - - utilities.send_reply(self, msg, ifttt:do_ifttt_request(key, event, value1, value2, value3), true) -end - -return ifttt \ No newline at end of file diff --git a/miku/plugins/instagram.lua b/miku/plugins/instagram.lua deleted file mode 100644 index d411cbf..0000000 --- a/miku/plugins/instagram.lua +++ /dev/null @@ -1,80 +0,0 @@ -local instagram = {} - -local https = require('ssl.https') -local json = require('dkjson') -local URL = require('socket.url') -local utilities = require('miku.utilities') - -function instagram:init(config) - if not cred_data.instagram_access_token then - print('Missing config value: instagram_access_token.') - print('instagram.lua will not be enabled.') - return - end - - instagram.triggers = { - "instagram.com/p/([A-Za-z0-9-_-]+)" - } -end - -local BASE_URL = 'https://api.instagram.com/v1' -local access_token = cred_data.instagram_access_token - -function instagram:get_insta_data(insta_code) - local url = BASE_URL..'/media/shortcode/'..insta_code..'?access_token='..access_token - local res,code = https.request(url) - if code ~= 200 then return nil end - local data = json.decode(res).data - return data -end - -function instagram:send_instagram_data(data) - -- Header - local username = data.user.username - local full_name = data.user.full_name - if username == full_name then - header = full_name..' hat ein' - else - header = full_name..' ('..username..') hat ein' - end - if data.type == 'video' then - header = header..' Video gepostet' - else - header = header..' Foto gepostet' - end - - -- Caption - if data.caption == nil then - caption = '' - else - caption = ':\n'..data.caption.text - end - - -- Footer - local comments = comma_value(data.comments.count) - local likes = comma_value(data.likes.count) - local footer = '\n'..likes..' Likes, '..comments..' Kommentare' - if data.type == 'video' then - footer = '\n'..data.videos.standard_resolution.url..footer - end - - -- Image - local image_url = data.images.standard_resolution.url - - return header..caption..footer, image_url -end - -function instagram:action(msg, config, matches) - local insta_code = matches[1] - local data = instagram:get_insta_data(insta_code) - if not data then utilities.send_reply(self, msg, config.errors.connection) return end - - local text, image_url = instagram:send_instagram_data(data) - if not image_url then utilities.send_reply(self, msg, config.errors.connection) return end - - utilities.send_typing(self, msg.chat.id, 'upload_photo') - local file = download_to_file(image_url) - utilities.send_photo(self, msg.chat.id, file, text, msg.message_id) -end - -return instagram diff --git a/miku/plugins/isup.lua b/miku/plugins/isup.lua index 1c5a4ac..cbdafa6 100644 --- a/miku/plugins/isup.lua +++ b/miku/plugins/isup.lua @@ -8,8 +8,8 @@ local utilities = require('miku.utilities') function isup:init(config) isup.triggers = { - "^/isup (.*)$", - "^/ping (.*)$" + "^/[Ii][Ss][Uu][Pp] (.*)$", + "^/[Pp][Ii][Nn][Gg] (.*)$" } isup.doc = [[* diff --git a/miku/plugins/location_manager.lua b/miku/plugins/location_manager.lua index 9d8a194..46c3870 100644 --- a/miku/plugins/location_manager.lua +++ b/miku/plugins/location_manager.lua @@ -5,9 +5,9 @@ local redis = (loadfile "./miku/redis.lua")() function loc_manager:init(config) loc_manager.triggers = { - "^/location (set) (.*)$", - "^/location (del)$", - "^/location$" + "^/[Ll][Oo][Cc][Aa][Tt][Ii][Oo][Nn] (set) (.*)$", + "^/[Ll][Oo][Cc][Aa][Tt][Ii][Oo][Nn] (del)$", + "^/[Ll][Oo][Cc][Aa][Tt][Ii][Oo][Nn]$" } loc_manager.doc = [[* ]]..config.cmd_pat..[[location*: Gibt deinen gesetzten Wohnort aus diff --git a/miku/plugins/luarun.lua b/miku/plugins/luarun.lua deleted file mode 100644 index b8d9176..0000000 --- a/miku/plugins/luarun.lua +++ /dev/null @@ -1,53 +0,0 @@ -local luarun = {} - -local utilities = require('miku.utilities') -local URL = require('socket.url') -local JSON = require('dkjson') - -function luarun:init(config) - luarun.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('lua', true):t('return', true).table -end - -function luarun:action(msg, config) - - if msg.from.id ~= config.admin then - return true - end - - local input = utilities.input(msg.text) - if not input then - utilities.send_reply(self, msg, 'Please enter a string to load.') - return - end - - if msg.text_lower:match('^'..config.cmd_pat..'return') then - input = 'return ' .. input - end - - local output = loadstring( [[ - local bot = require('miku.bot') - local bindings = require('miku.bindings') - local utilities = require('miku.utilities') - local JSON = require('dkjson') - local URL = require('socket.url') - local HTTP = require('socket.http') - local HTTPS = require('ssl.https') - return function (self, msg, config) ]] .. input .. [[ end - ]] )()(self, msg, config) - if output == nil then - output = 'Done!' - else - if type(output) == 'table' then - local s = JSON.encode(output, {indent=true}) - if URL.escape(s):len() < 4000 then - output = s - end - end - output = '```\n' .. tostring(output) .. '\n```' - end - utilities.send_message(self, msg.chat.id, output, true, msg.message_id, true) - -end - -return luarun - diff --git a/miku/plugins/magische_miesmuschel.lua b/miku/plugins/magische_miesmuschel.lua index 6aeabc8..d8adbd3 100644 --- a/miku/plugins/magische_miesmuschel.lua +++ b/miku/plugins/magische_miesmuschel.lua @@ -3,7 +3,7 @@ local muschel = {} local utilities = require('miku.utilities') muschel.triggers = { - "^[Mm][Aa][Gg][Ii][Ss][Cc][Hh][Ee] [Mm][Ii][Ee][Ss][Mm][Uu][Ss][Cc][Hh][Ee][Ll], (.*)$" + "^[Mm][Aa][Gg][Ii][Ss][Cc][Hh][Ee] [Mm][Ii][Ee][Ss][Mm][Uu][Ss][Cc][Hh][Ee][Ll] (.*)$" } function muschel:frag_die_muschel() diff --git a/miku/plugins/media.lua b/miku/plugins/media.lua index 7bd97b1..edc4131 100644 --- a/miku/plugins/media.lua +++ b/miku/plugins/media.lua @@ -21,6 +21,7 @@ media.triggers = { "^(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(avi))$", "(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(wav))$", "(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(apk))$", + "(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(ipa))$", "(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(webm))$", "^(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(ogv))$", "(https?://[%w-_%.%?%.:,/%+=&%[%]]+%.(webp))$" diff --git a/miku/plugins/myanimelist.lua b/miku/plugins/myanimelist.lua index 1571f0c..7268318 100644 --- a/miku/plugins/myanimelist.lua +++ b/miku/plugins/myanimelist.lua @@ -9,8 +9,8 @@ local bindings = require('miku.bindings') mal.command = 'anime , /manga ' function mal:init(config) - if not cred_data.mal_user then - print('Missing config value: mal_user.') + if not cred_data.mal_username then + print('Missing config value: mal_username.') print('myanimelist.lua will not be enabled.') return elseif not cred_data.mal_pw then @@ -21,6 +21,7 @@ function mal:init(config) mal.triggers = { "^/(anime) (.+)$", + "^/(mal) (.+)$", "^/(manga) (.+)$" } mal.doc = [[* @@ -29,7 +30,7 @@ function mal:init(config) ]] end -local user = cred_data.mal_user +local user = cred_data.mal_username local password = cred_data.mal_pw local BASE_URL = 'http://'..user..':'..password..'@myanimelist.net/api' @@ -192,7 +193,7 @@ end function mal:action(msg, config, matches) local query = URL.escape(matches[2]) - if matches[1] == 'anime' then + if matches[1] == 'anime' or matches[1] == 'mal' then local anime_info = mal:get_mal_info(query, 'anime') if anime_info == "HTTP-Fehler" then utilities.send_reply(self, msg, 'Anime nicht gefunden!') diff --git a/miku/plugins/rss.lua b/miku/plugins/rss.lua index aeb0e30..93cdd58 100644 --- a/miku/plugins/rss.lua +++ b/miku/plugins/rss.lua @@ -78,6 +78,18 @@ function unescape_for_rss(str) return str end +function cleanRSS(cleantext) + cleantext = string.gsub(cleantext, '%[mehr%]', '') + cleantext = string.gsub(cleantext, '%[video%]', '') + cleantext = string.gsub(cleantext, '...%[more%]', '') + cleantext = string.gsub(cleantext, '%[more%]', '') + cleantext = string.gsub(cleantext, 'Click for full.', '') + cleantext = string.gsub(cleantext, 'Read more »', '') + cleantext = string.gsub(cleantext, 'Meldung bei www.tagesschau.de lesen', '') + + return cleantext +end + function get_base_redis(id, option, extra) local ex = '' if option ~= nil then @@ -344,7 +356,8 @@ function rss:cron(self_plz) else content = '' end - text = text..'\n*[*#RSS*] '..title..'*\n'..utilities.trim(utilities.markdown_escape_simple(content))..' [Weiterlesen]('..link..')\n' + content = cleanRSS(content) + text = text..'\n*[*#RSS*] '..title..'*\n'..utilities.trim(utilities.md_escape(content))..' [Weiterlesen]('..link..')\n' end if text ~= '' then local newlast = newentr[1].id diff --git a/miku/plugins/youtube.lua b/miku/plugins/youtube.lua index cbb1c38..466e205 100644 --- a/miku/plugins/youtube.lua +++ b/miku/plugins/youtube.lua @@ -34,6 +34,13 @@ local makeOurDate = function(dateString) return day..'.'..month..'.'..year end +function markdown_escape_simple(text) + text = text:gsub('_', '\\_') + text = text:gsub('%*', '\\*') + text = text:gsub('`', '\\`') + return text +end + function get_yt_data (yt_code) local apikey = cred_data.google_apikey local url = BASE_URL..'/videos?part=snippet,statistics,contentDetails&key='..apikey..'&id='..yt_code..'&fields=items(snippet(publishedAt,channelTitle,localized(title,description),thumbnails),statistics(viewCount,likeCount,dislikeCount,commentCount),contentDetails(duration,regionRestriction(blocked)))' @@ -98,7 +105,7 @@ function get_yt_thumbnail(data) end function send_youtube_data(data, msg, self, link, sendpic) - local title = utilities.markdown_escape_simple(data.snippet.localized.title) + local title = markdown_escape_simple(data.snippet.localized.title) -- local description = data.snippet.localized.description local uploader = data.snippet.channelTitle local upload_date = makeOurDate(data.snippet.publishedAt) diff --git a/miku/utilities.lua b/miku/utilities.lua index bf04b8f..e6871fb 100644 --- a/miku/utilities.lua +++ b/miku/utilities.lua @@ -491,14 +491,6 @@ end function utilities.markdown_escape(text) text = text:gsub('_', '\\_') text = text:gsub('%[', '\\[') - text = text:gsub('%]', '\\]') - text = text:gsub('%*', '\\*') - text = text:gsub('`', '\\`') - return text -end - -function utilities.markdown_escape_simple(text) - text = text:gsub('_', '\\_') text = text:gsub('%*', '\\*') text = text:gsub('`', '\\`') return text