Upstream + alle Plugins angepasst

This commit is contained in:
Andreas Bielawski
2016-08-24 17:18:17 +02:00
161 changed files with 1074 additions and 937 deletions

View File

@@ -1,9 +1,23 @@
--[[
bindings.lua (rev. 2016/05/28)
otouto's bindings for the Telegram bot API.
https://core.telegram.org/bots/api
Copyright 2016 topkecleon. Published under the AGPLv3.
See the "Bindings" section of README.md for usage information.
bindings.lua (rev. 2016/08/20)
otouto's bindings for the Telegram bot API.
https://core.telegram.org/bots/api
See the "Bindings" section of README.md for usage information.
Copyright 2016 topkecleon <drew@otou.to>
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License version 3 as
published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
for more details.
You should have received a copy of the GNU Affero General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
]]--
local bindings = {}
@@ -14,6 +28,11 @@ local JSON = require('dkjson')
local ltn12 = require('ltn12')
local MP_ENCODE = require('multipart-post').encode
function bindings.init(token)
bindings.BASE_URL = 'https://api.telegram.org/bot' .. token .. '/'
return bindings
end
-- Build and send a request to the API.
-- Expecting self, method, and parameters, where method is a string indicating
-- the API method and parameters is a key/value table of parameters with their
@@ -21,7 +40,7 @@ local MP_ENCODE = require('multipart-post').encode
-- Returns the table response with success. Returns false and the table
-- response with failure. Returns false and false with a connection error.
-- To mimic old/normal behavior, it errs if used with an invalid method.
function bindings:request(method, parameters, file)
function bindings.request(method, parameters, file)
parameters = parameters or {}
for k,v in pairs(parameters) do
parameters[k] = tostring(v)
@@ -48,7 +67,7 @@ function bindings:request(method, parameters, file)
local response = {}
local body, boundary = MP_ENCODE(parameters)
local success, code = HTTPS.request{
url = self.BASE_URL .. method,
url = bindings.BASE_URL .. method,
method = 'POST',
headers = {
["Content-Type"] = "multipart/form-data; boundary=" .. boundary,
@@ -75,8 +94,8 @@ function bindings:request(method, parameters, file)
end
function bindings.gen(_, key)
return function(self, params, file)
return bindings.request(self, key, params, file)
return function(params, file)
return bindings.request(key, params, file)
end
end
setmetatable(bindings, { __index = bindings.gen })

View File

@@ -1,23 +1,39 @@
--[[
bot.lua
The heart and sole of otouto, ie the init and main loop.
Copyright 2016 topkecleon <drew@otou.to>
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License version 3 as
published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
for more details.
You should have received a copy of the GNU Affero General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
]]--
local bot = {}
bindings = require('miku.bindings')
utilities = require('miku.utilities')
bot.version = '160823'
bot.version = '160824'
function bot:init(config) -- The function run when the bot is started or reloaded.
bindings = require('otouto.bindings').init(config.bot_api_key)
utilities = require('otouto.utilities')
cred_data = load_cred()
assert(
config.bot_api_key,
'You did not set your bot token in the config!'
)
self.BASE_URL = 'https://api.telegram.org/bot' .. config.bot_api_key .. '/'
-- Fetch bot information. Try until it succeeds.
repeat
print('Sammel Bot-Informationen...')
self.info = bindings.getMe(self)
self.info = bindings.getMe()
until self.info
self.info = self.info.result
@@ -87,7 +103,7 @@ function bot:on_callback_receive(callback, msg, config) -- whenever a new callba
-- vardump(callback)
if msg.date < os.time() - 1800 then -- Do not process old messages.
utilities.answer_callback_query(self, callback, 'Nachricht älter als eine halbe Stunde, bitte sende den Befehl selbst noch einmal.', true)
utilities.answer_callback_query(callback, 'Nachricht älter als eine halbe Stunde, bitte sende den Befehl selbst noch einmal.', true)
return
end
@@ -99,14 +115,14 @@ function bot:on_callback_receive(callback, msg, config) -- whenever a new callba
local user_id = callback.from.id
local chat_id = msg.chat.id
if redis:get('blocked:'..user_id) then
utilities.answer_callback_query(self, callback, 'Du darfst den Bot nicht nutzen!', true)
utilities.answer_callback_query(callback, 'Du darfst den Bot nicht nutzen!', true)
return
end
-- Check if user is banned
local banned = redis:get('banned:'..chat_id..':'..user_id)
if banned then
utilities.answer_callback_query(self, callback, 'Du darfst den Bot nicht nutzen!', true)
utilities.answer_callback_query(callback, 'Du darfst den Bot nicht nutzen!', true)
return
end
@@ -119,11 +135,11 @@ function bot:on_callback_receive(callback, msg, config) -- whenever a new callba
if msg.chat.type == 'group' or msg.chat.type == 'supergroup' then
local allowed = redis:get('whitelist:chat#id'.. chat_id)
if not allowed then
utilities.answer_callback_query(self, callback, 'Du darfst den Bot nicht nutzen!', true)
utilities.answer_callback_query(callback, 'Du darfst den Bot nicht nutzen!', true)
return
end
else
utilities.answer_callback_query(self, callback, 'Du darfst den Bot nicht nutzen!', true)
utilities.answer_callback_query(callback, 'Du darfst den Bot nicht nutzen!', true)
return
end
end
@@ -156,13 +172,13 @@ function bot:process_inline_query(inline_query, config) -- When an inline query
-- but he WON'T be able to make new requests.
local user_id = inline_query.from.id
if redis:get('blocked:'..user_id) then
utilities.answer_inline_query(self, inline_query, nil, 0, true)
abort_inline_query(inline_query)
return
end
if not config.enable_inline_for_everyone then
local is_whitelisted = redis:get('whitelist:user#id'..inline_query.from.id)
if not is_whitelisted then utilities.answer_inline_query(self, inline_query, nil, 0, true) return end
if not is_whitelisted then abort_inline_query(inline_query) return end
end
if inline_query.query:match('"') then
@@ -175,7 +191,7 @@ function bot:process_inline_query(inline_query, config) -- When an inline query
end
-- Stop the spinning circle
utilities.answer_inline_query(self, inline_query, nil, 0, true)
abort_inline_query(inline_query)
end
function bot:run(config)
@@ -183,7 +199,7 @@ function bot:run(config)
while self.is_started do
-- Update loop
local res = bindings.getUpdates(self, { timeout = 20, offset = self.last_update+1 } )
local res = bindings.getUpdates{ timeout = 20, offset = self.last_update+1 }
if res then
-- Iterate over every new message.
for n=1, #res.result do
@@ -210,7 +226,7 @@ function bot:run(config)
if v.cron then -- Call each plugin's cron function, if it has one.
local result, err = pcall(function() v.cron(self, config) end)
if not result then
utilities.handle_exception(self, err, 'CRON: ' .. n, config)
utilities.handle_exception(self, err, 'CRON: ' .. n, config.log_chat)
end
end
end
@@ -232,7 +248,8 @@ function pre_process_msg(self, msg, config)
local plugin = self.plugins[n]
if plugin.pre_process and msg then
-- print('Preprocess '..plugin.name) -- remove comment to restore old behaviour
new_msg = plugin:pre_process(msg, self, config)
new_msg = plugin:pre_process(msg, config)
if not new_msg then return end -- Message was deleted
end
end
return new_msg
@@ -274,7 +291,7 @@ function match_plugins(self, msg, config, plugin)
end
end)
if not success then
utilities.handle_exception(self, result, msg.from.id .. ': ' .. msg.text, config)
utilities.handle_exception(self, result, msg.from.id .. ': ' .. msg.text, config.log_chat)
return
end
-- if one pattern matches, end
@@ -310,11 +327,16 @@ function create_plugin_set()
'control',
'about',
'id',
'post_photo',
'images',
'media',
'service_migrate_to_supergroup',
'creds',
'echo',
'banhammer',
'channels',
'plugins',
'settings',
'help'
}
print ('Aktiviere Plugins und speicher in telegram:enabled_plugins')

View File

@@ -31,7 +31,7 @@ end
function ninegag:inline_callback(inline_query, config)
local res, code = http.request(url)
if code ~= 200 then utilities.answer_inline_query(self, inline_query) return end
if code ~= 200 then abort_inline_query(inline_query) return end
local gag = json.decode(res)
local results = '['
@@ -45,19 +45,19 @@ function ninegag:inline_callback(inline_query, config)
end
end
local results = results..']'
utilities.answer_inline_query(self, inline_query, results, 300)
utilities.answer_inline_query(inline_query, results, 300)
end
function ninegag:action(msg, config)
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local url, title, post_url = ninegag:get_9GAG()
if not url then
utilities.send_reply(self, msg, config.errors.connection)
utilities.send_reply(msg, config.errors.connection)
return
end
local file = download_to_file(url)
utilities.send_photo(self, msg.chat.id, file, title, msg.message_id, '{"inline_keyboard":[[{"text":"Post aufrufen","url":"'..post_url..'"}]]}')
utilities.send_photo(msg.chat.id, file, title, msg.message_id, '{"inline_keyboard":[[{"text":"Post aufrufen","url":"'..post_url..'"}]]}')
end
return ninegag

View File

@@ -14,7 +14,7 @@ function about:init(config)
end
function about:action(msg, config)
utilities.send_message(self, msg.chat.id, about.text, true, nil, true)
utilities.send_message(msg.chat.id, about.text, true, nil, true)
end
return about

View File

@@ -27,11 +27,11 @@ function adfly:inline_callback(inline_query, config, matches)
url = redis:get(hash)
end
if not url then utilities.answer_inline_query(self, inline_query) return end
if url == 'NOTFOUND' then utilities.answer_inline_query(self, inline_query) return end
if not url then abort_inline_query(inline_query) return end
if url == 'NOTFOUND' then abort_inline_query(inline_query) return end
local results = '[{"type":"article","id":"1","title":"Verlängerte URL","description":"'..url..'","url":"'..url..'","thumb_url":"https://anditest.perseus.uberspace.de/inlineQuerys/generic/internet.jpg","thumb_width":165,"thumb_height":150,"hide_url":true,"input_message_content":{"message_text":"'..url..'"}}]'
utilities.answer_inline_query(self, inline_query, results, 3600, true)
utilities.answer_inline_query(inline_query, results, 3600, true)
end
function adfly:action(msg, config, matches)
@@ -40,17 +40,17 @@ function adfly:action(msg, config, matches)
if redis:exists(hash) == false then
local expanded_url = adfly:expand_adfly_link(adfly_code)
if not expanded_url then
utilities.send_reply(self, msg, config.errors.connection)
utilities.send_reply(msg, config.errors.connection)
return
end
if expanded_url == 'NOTFOUND' then
utilities.send_reply(self, msg, 'Fehler: Keine Adf.ly-URL gefunden!')
utilities.send_reply(msg, 'Fehler: Keine Adf.ly-URL gefunden!')
return
end
utilities.send_reply(self, msg, expanded_url)
utilities.send_reply(msg, expanded_url)
else
local data = redis:get(hash)
utilities.send_reply(self, msg, data)
utilities.send_reply(msg, data)
end
end

View File

@@ -58,10 +58,10 @@ function afk:switch_afk(user_name, user_id, chat_id, timestamp, text)
end
end
function afk:pre_process(msg, self)
function afk:pre_process(msg)
if msg.chat.type == "private" then
-- Ignore
return
return msg
end
local user_name = get_name(msg)
@@ -84,15 +84,15 @@ function afk:pre_process(msg, self)
if afk_text then
redis:hset(hash, 'afk_text', false)
if show_afk_keyboard == 'true' then
utilities.send_reply(self, msg, user_name..' ist wieder da! (war: <b>'..afk_text..'</b> für '..duration..')', 'HTML', '{"hide_keyboard":true,"selective":true}')
utilities.send_reply(msg, user_name..' ist wieder da! (war: <b>'..afk_text..'</b> für '..duration..')', 'HTML', '{"hide_keyboard":true,"selective":true}')
else
utilities.send_message(self, chat_id, user_name..' ist wieder da! (war: <b>'..afk_text..'</b> für '..duration..')', true, nil, 'HTML')
utilities.send_message(chat_id, user_name..' ist wieder da! (war: <b>'..afk_text..'</b> für '..duration..')', true, nil, 'HTML')
end
else
if show_afk_keyboard == 'true' then
utilities.send_reply(self, msg, user_name..' ist wieder da! (war '..duration..' weg)', nil, '{"hide_keyboard":true,"selective":true}')
utilities.send_reply(msg, user_name..' ist wieder da! (war '..duration..' weg)', nil, '{"hide_keyboard":true,"selective":true}')
else
utilities.send_message(self, chat_id, user_name..' ist wieder da! (war '..duration..' weg)')
utilities.send_message(chat_id, user_name..' ist wieder da! (war '..duration..' weg)')
end
end
end
@@ -102,7 +102,7 @@ end
function afk:action(msg, config, matches)
if msg.chat.type == "private" then
utilities.send_reply(self, msg, "Mir ist's egal, ob du AFK bist.")
utilities.send_reply(msg, "Mir ist's egal, ob du AFK bist.")
return
end
@@ -118,7 +118,7 @@ function afk:action(msg, config, matches)
keyboard = nil
end
utilities.send_reply(self, msg, afk:switch_afk(user_name, user_id, chat_id, timestamp, matches[2]), false, keyboard)
utilities.send_reply(msg, afk:switch_afk(user_name, user_id, chat_id, timestamp, matches[2]), false, keyboard)
end
return afk

View File

@@ -96,15 +96,15 @@ function app_store:action(msg, config, matches)
local data = app_store:get_appstore_data()
if data == nil then print('Das Appstore-Plugin unterstützt nur Apps!') end
if data == 'HTTP-FEHLER' or data == 'NOTFOUND' then
utilities.send_reply(self, msg, '<b>App nicht gefunden!</b>', 'HTML')
utilities.send_reply(msg, '<b>App nicht gefunden!</b>', 'HTML')
return
else
local output, image_url = app_store:send_appstore_data(data)
utilities.send_reply(self, msg, output, 'HTML')
utilities.send_reply(msg, output, 'HTML')
if image_url then
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(image_url)
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
end
end
end

View File

@@ -59,8 +59,8 @@ function bImages:inline_callback(inline_query, config, matches)
results = bImages:getImages(query)
end
if not results then utilities.answer_inline_query(self, inline_query) return end
utilities.answer_inline_query(self, inline_query, results, 3600)
if not results then abort_inline_query(inline_query) return end
utilities.answer_inline_query(inline_query, results, 3600)
end
function bImages:action()

View File

@@ -39,11 +39,11 @@ function banhammer:init(config)
Alternativ kann auch auf die Nachricht des Users geantwortet werden, die Befehle sind dnn die obrigen ohne `user` bzw.`delete`.]]
end
function banhammer:kick_user(user_id, chat_id, self, onlykick)
function banhammer:kick_user(user_id, chat_id, onlykick)
if user_id == tostring(our_id) then
return "Ich werde mich nicht selbst kicken!"
else
local request = bindings.request(self, 'kickChatMember', {
local request = bindings.request('kickChatMember', {
chat_id = chat_id,
user_id = user_id
} )
@@ -56,7 +56,7 @@ function banhammer:kick_user(user_id, chat_id, self, onlykick)
end
end
function banhammer:ban_user(user_id, chat_id, self)
function banhammer:ban_user(user_id, chat_id)
if user_id == tostring(our_id) then
return "Ich werde mich nicht selbst kicken!"
else
@@ -64,15 +64,15 @@ function banhammer:ban_user(user_id, chat_id, self)
local hash = 'banned:'..chat_id..':'..user_id
redis:set(hash, true)
-- Kick from chat
return banhammer:kick_user(user_id, chat_id, self)
return banhammer:kick_user(user_id, chat_id)
end
end
function banhammer:unban_user(user_id, chat_id, self, chat_type)
function banhammer:unban_user(user_id, chat_id, chat_type)
local hash = 'banned:'..chat_id..':'..user_id
redis:del(hash)
if chat_type == 'supergroup' then
bindings.request(self, 'unbanChatMember', {
bindings.request('unbanChatMember', {
chat_id = chat_id,
user_id = user_id
} )
@@ -98,7 +98,7 @@ function banhammer:is_chat_whitelisted(id)
return white
end
function banhammer:pre_process(msg, self, config)
function banhammer:pre_process(msg, config)
-- SERVICE MESSAGE
if msg.new_chat_member then
local user_id = msg.new_chat_member.id
@@ -106,7 +106,7 @@ function banhammer:pre_process(msg, self, config)
local banned = banhammer:is_banned(user_id, msg.chat.id)
if banned then
print('User is banned!')
banhammer:kick_user(user_id, msg.chat.id, self, true)
banhammer:kick_user(user_id, msg.chat.id, true)
end
-- No further checks
return msg
@@ -119,7 +119,7 @@ function banhammer:pre_process(msg, self, config)
local banned = banhammer:is_banned(user_id, chat_id)
if banned then
print('Banned user talking!')
banhammer:ban_user(user_id, chat_id, self)
banhammer:ban_user(user_id, chat_id)
return
end
end
@@ -155,7 +155,7 @@ function banhammer:pre_process(msg, self, config)
end
else
if not has_been_warned then
utilities.send_reply(self, msg, "Dies ist ein privater Bot, der erst nach einer Freischaltung benutzt werden kann.\nThis is a private bot, which can only be after an approval.")
utilities.send_reply(msg, "Dies ist ein privater Bot, der erst nach einer Freischaltung benutzt werden kann.\nThis is a private bot, which can only be after an approval.")
redis:hset('user:'..user_id, 'has_been_warned', true)
else
print('User has already been warned!')
@@ -181,7 +181,7 @@ function banhammer:action(msg, config, matches)
if matches[1] == 'leave' then
if msg.chat.type == 'group' or msg.chat.type == 'supergroup' then
bindings.request(self, 'leaveChat', {
bindings.request('leaveChat', {
chat_id = msg.chat.id
} )
return
@@ -206,17 +206,17 @@ function banhammer:action(msg, config, matches)
if msg.chat.type == 'group' or msg.chat.type == 'supergroup' then
if matches[2] == 'user' or not matches[2] then
local text = banhammer:ban_user(user_id, chat_id, self)
utilities.send_reply(self, msg, text)
local text = banhammer:ban_user(user_id, chat_id)
utilities.send_reply(msg, text)
return
end
if matches[2] == 'delete' then
local text = banhammer:unban_user(user_id, chat_id, self, msg.chat.type)
utilities.send_reply(self, msg, text)
local text = banhammer:unban_user(user_id, chat_id, msg.chat.type)
utilities.send_reply(msg, text)
return
end
else
utilities.send_reply(self, msg, 'Das ist keine Chat-Gruppe')
utilities.send_reply(msg, 'Das ist keine Chat-Gruppe')
return
end
end
@@ -234,10 +234,10 @@ function banhammer:action(msg, config, matches)
user_id = msg.reply_to_message.from.id
end
end
banhammer:kick_user(user_id, msg.chat.id, self, true)
banhammer:kick_user(user_id, msg.chat.id, true)
return
else
utilities.send_reply(self, msg, 'Das ist keine Chat-Gruppe')
utilities.send_reply(msg, 'Das ist keine Chat-Gruppe')
return
end
end
@@ -246,14 +246,14 @@ function banhammer:action(msg, config, matches)
if matches[2] == 'enable' then
local hash = 'whitelist:enabled'
redis:set(hash, true)
utilities.send_reply(self, msg, 'Whitelist aktiviert')
utilities.send_reply(msg, 'Whitelist aktiviert')
return
end
if matches[2] == 'disable' then
local hash = 'whitelist:enabled'
redis:del(hash)
utilities.send_reply(self, msg, 'Whitelist deaktiviert')
utilities.send_reply(msg, 'Whitelist deaktiviert')
return
end
@@ -268,7 +268,7 @@ function banhammer:action(msg, config, matches)
end
local hash = 'whitelist:user#id'..user_id
redis:set(hash, true)
utilities.send_reply(self, msg, 'User '..user_id..' whitelisted')
utilities.send_reply(msg, 'User '..user_id..' whitelisted')
return
end
@@ -285,14 +285,14 @@ function banhammer:action(msg, config, matches)
end
local hash = 'whitelist:user#id'..user_id
redis:del(hash)
utilities.send_reply(self, msg, 'User '..user_id..' von der Whitelist entfernt!')
utilities.send_reply(msg, 'User '..user_id..' von der Whitelist entfernt!')
return
end
if matches[2] == 'user' then
local hash = 'whitelist:user#id'..matches[3]
redis:set(hash, true)
utilities.send_reply(self, msg, 'User '..matches[3]..' whitelisted')
utilities.send_reply(msg, 'User '..matches[3]..' whitelisted')
return
end
@@ -300,10 +300,10 @@ function banhammer:action(msg, config, matches)
if msg.chat.type == 'group' or msg.chat.type == 'supergroup' then
local hash = 'whitelist:chat#id'..msg.chat.id
redis:set(hash, true)
utilities.send_reply(self, msg, 'Chat '..msg.chat.id..' whitelisted')
utilities.send_reply(msg, 'Chat '..msg.chat.id..' whitelisted')
return
else
utilities.send_reply(self, msg, 'Das ist keine Chat-Gruppe!')
utilities.send_reply(msg, 'Das ist keine Chat-Gruppe!')
return
end
end
@@ -311,7 +311,7 @@ function banhammer:action(msg, config, matches)
if matches[2] == 'delete' and matches[3] == 'user' then
local hash = 'whitelist:user#id'..matches[4]
redis:del(hash)
utilities.send_reply(self, msg, 'User '..matches[4]..' von der Whitelist entfernt!')
utilities.send_reply(msg, 'User '..matches[4]..' von der Whitelist entfernt!')
return
end
@@ -319,10 +319,10 @@ function banhammer:action(msg, config, matches)
if msg.chat.type == 'group' or msg.chat.type == 'supergroup' then
local hash = 'whitelist:chat#id'..msg.chat.id
redis:del(hash)
utilities.send_reply(self, msg, 'Chat '..msg.chat.id..' von der Whitelist entfernt')
utilities.send_reply(msg, 'Chat '..msg.chat.id..' von der Whitelist entfernt')
return
else
utilities.send_reply(self, msg, 'Das ist keine Chat-Gruppe!')
utilities.send_reply(msg, 'Das ist keine Chat-Gruppe!')
return
end
end
@@ -333,14 +333,14 @@ function banhammer:action(msg, config, matches)
if matches[2] == 'user' and matches[3] then
local hash = 'blocked:'..matches[3]
redis:set(hash, true)
utilities.send_reply(self, msg, 'User '..matches[3]..' darf den Bot nun nicht mehr nutzen.')
utilities.send_reply(msg, 'User '..matches[3]..' darf den Bot nun nicht mehr nutzen.')
return
end
if matches[2] == 'delete' and matches[3] then
local hash = 'blocked:'..matches[3]
redis:del(hash)
utilities.send_reply(self, msg, 'User '..matches[3]..' darf den Bot wieder nutzen.')
utilities.send_reply(msg, 'User '..matches[3]..' darf den Bot wieder nutzen.')
return
end
@@ -357,7 +357,7 @@ function banhammer:action(msg, config, matches)
end
local hash = 'blocked:'..user_id
redis:set(hash, true)
utilities.send_reply(self, msg, 'User '..user_id..' darf den Bot nun nicht mehr nutzen.')
utilities.send_reply(msg, 'User '..user_id..' darf den Bot nun nicht mehr nutzen.')
return
end
@@ -374,7 +374,7 @@ function banhammer:action(msg, config, matches)
end
local hash = 'blocked:'..user_id
redis:del(hash)
utilities.send_reply(self, msg, 'User '..user_id..' darf den Bot wieder nutzen.')
utilities.send_reply(msg, 'User '..user_id..' darf den Bot wieder nutzen.')
return
end

View File

@@ -90,7 +90,7 @@ function birthday:action(msg, config, matches)
end
end
utilities.send_reply(self, msg, text, 'HTML')
utilities.send_reply(msg, text, 'HTML')
end
return birthday

View File

@@ -38,10 +38,10 @@ function bitly:inline_callback(inline_query, config, matches)
url = data.long_url
end
if not url then utilities.answer_inline_query(self, inline_query) return end
if not url then abort_inline_query(inline_query) return end
local results = '[{"type":"article","id":"2","title":"Verlängerte URL","description":"'..url..'","url":"'..url..'","thumb_url":"https://anditest.perseus.uberspace.de/inlineQuerys/generic/internet.jpg","thumb_width":165,"thumb_height":150,"hide_url":true,"input_message_content":{"message_text":"'..url..'"}}]'
utilities.answer_inline_query(self, inline_query, results, 3600)
utilities.answer_inline_query(inline_query, results, 3600)
end
function bitly:action(msg, config, matches)
@@ -50,14 +50,14 @@ function bitly:action(msg, config, matches)
if redis:exists(hash) == false then
local longurl = bitly:expand_bitly_link(shorturl)
if not longurl then
utilities.send_reply(self, msg, config.errors.connection)
utilities.send_reply( msg, config.errors.connection)
return
end
utilities.send_reply(self, msg, longurl)
utilities.send_reply(msg, longurl)
return
else
local data = redis:hgetall(hash)
utilities.send_reply(self, msg, data.long_url)
utilities.send_reply(msg, data.long_url)
return
end
end

View File

@@ -83,38 +83,38 @@ function bitly_create:action(msg, config, matches)
bitly_access_token = redis:hget(hash, 'bitly')
if matches[1] == 'auth' and matches[2] then
utilities.send_reply(self, msg, bitly_create:get_bitly_access_token(hash, matches[2]), true)
utilities.send_reply(msg, bitly_create:get_bitly_access_token(hash, matches[2]), true)
local message_id = redis:hget(hash, 'bitly_login_msg')
utilities.edit_message(self, msg.chat.id, message_id, '*Anmeldung abgeschlossen!*', true, true)
utilities.edit_message(msg.chat.id, message_id, '*Anmeldung abgeschlossen!*', true, true)
redis:hdel(hash, 'bitly_login_msg')
return
end
if matches[1] == 'auth' then
local result = utilities.send_reply(self, msg, '*Bitte logge dich ein und folge den Anweisungen.*', true, '{"inline_keyboard":[[{"text":"Bei Bitly anmelden","url":"https://bitly.com/oauth/authorize?client_id='..client_id..'&redirect_uri='..redirect_uri..'&state='..self.info.username..'"}]]}')
local result = utilities.send_reply(msg, '*Bitte logge dich ein und folge den Anweisungen.*', true, '{"inline_keyboard":[[{"text":"Bei Bitly anmelden","url":"https://bitly.com/oauth/authorize?client_id='..client_id..'&redirect_uri='..redirect_uri..'&state='..self.info.username..'"}]]}')
redis:hset(hash, 'bitly_login_msg', result.result.message_id)
return
end
if matches[1] == 'unauth' and bitly_access_token then
redis:hdel(hash, 'bitly')
utilities.send_reply(self, msg, '*Erfolgreich ausgeloggt!* Du kannst den Zugriff [in deinen Kontoeinstellungen](https://bitly.com/a/settings/connected) endgültig entziehen.', true)
utilities.send_reply(msg, '*Erfolgreich ausgeloggt!* Du kannst den Zugriff [in deinen Kontoeinstellungen](https://bitly.com/a/settings/connected) endgültig entziehen.', true)
return
elseif matches[1] == 'unauth' and not bitly_access_token then
utilities.send_reply(self, msg, 'Wie willst du dich ausloggen, wenn du gar nicht eingeloggt bist?', true)
utilities.send_reply(msg, 'Wie willst du dich ausloggen, wenn du gar nicht eingeloggt bist?', true)
return
end
if matches[1] == 'me' and bitly_access_token then
local text = bitly_create:get_bitly_user_info(bitly_access_token)
if text then
utilities.send_reply(self, msg, text, true)
utilities.send_reply(msg, text, true)
return
else
return
end
elseif matches[1] == 'me' and not bitly_access_token then
utilities.send_reply(self, msg, 'Du bist nicht eingeloggt! Logge dich ein mit\n/short auth', true)
utilities.send_reply(msg, 'Du bist nicht eingeloggt! Logge dich ein mit\n/short auth', true)
return
end
@@ -130,7 +130,7 @@ function bitly_create:action(msg, config, matches)
long_url = url_encode(matches[2])
domain = matches[1]
end
utilities.send_reply(self, msg, bitly_create:create_bitlink(long_url, domain, bitly_access_token))
utilities.send_reply(msg, bitly_create:create_bitlink(long_url, domain, bitly_access_token))
return
end

View File

@@ -57,10 +57,10 @@ function boobs:action(msg, config, matches)
if url ~= nil then
local file = download_to_file(url)
utilities.send_photo(self, msg.chat.id, file, url, msg.message_id)
utilities.send_photo(msg.chat.id, file, url, msg.message_id)
return
else
utilities.send_reply(self, msg, 'Nichts gefunden :(')
utilities.send_reply(msg, 'Nichts gefunden :(')
return
end
end

View File

@@ -35,11 +35,11 @@ function br:action(msg, config, matches)
local article = URL.escape(matches[1])
local text, image_url = br:get_br_article(article)
if image_url then
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(image_url, 'br_teaser.jpg')
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
end
utilities.send_reply(self, msg, text, true)
utilities.send_reply(msg, text, true)
end
return br

View File

@@ -28,7 +28,7 @@ end
function btc:action(msg, config, matches)
utilities.send_reply(self, msg, btc:getBTCX(cur), true)
utilities.send_reply(msg, btc:getBTCX(cur), true)
end
return btc

View File

@@ -29,7 +29,7 @@ function calc:mathjs(exp)
end
function calc:action(msg, config, matches)
utilities.send_reply(self, msg, calc:mathjs(matches[1]))
utilities.send_reply(msg, calc:mathjs(matches[1]))
end
return calc

View File

@@ -56,18 +56,18 @@ function cats:inline_callback(inline_query, config, matches)
end
end
local results = results..']'
utilities.answer_inline_query(self, inline_query, results, 30)
utilities.answer_inline_query(inline_query, results, 30)
end
function cats:action(msg, config)
if matches[1] == 'gif' then
local url = 'http://thecatapi.com/api/images/get?type=gif&apikey='..apikey
local file = download_to_file(url, 'miau.gif')
utilities.send_document(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_document(msg.chat.id, file, nil, msg.message_id)
else
local url = 'http://thecatapi.com/api/images/get?type=jpg,png&apikey='..apikey
local file = download_to_file(url, 'miau.png')
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
end
end

View File

@@ -22,7 +22,7 @@ function cf_img:inline_callback(inline_query, config, matches)
local site = matches[1]
local pic = matches[2]
local full_url = cf_img:get_full_url(site, pic)
if not full_url then utilities.answer_inline_query(self, inline_query) return end
if not full_url then abort_inline_query(inline_query) return end
local results
@@ -31,7 +31,7 @@ function cf_img:inline_callback(inline_query, config, matches)
else
results = '[{"type":"photo","id":"7777","photo_url":"'..full_url..'","thumb_url":"'..full_url..'"}]'
end
utilities.answer_inline_query(self, inline_query, results, 3600, true)
utilities.answer_inline_query(inline_query, results, 3600, true)
end
function cf_img:action(msg, config, matches)
@@ -39,16 +39,16 @@ function cf_img:action(msg, config, matches)
local pic = matches[2]
local full_url = cf_img:get_full_url(site, pic)
if not full_url then
utilities.send_reply(self, msg, config.errors.connection)
utilities.send_reply(msg, config.errors.connection)
return
end
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(full_url)
if string.ends(full_url, '.gif') then
utilities.send_document(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_document(msg.chat.id, file, nil, msg.message_id)
else
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
end
end

View File

@@ -21,7 +21,7 @@ function channel:action(msg, config)
local input = utilities.input(msg.text)
local output
local chat_id = '@'..matches[1]
local admin_list, gca_results = utilities.get_chat_administrators(self, chat_id)
local admin_list, gca_results = utilities.get_chat_administrators(chat_id)
if admin_list then
local is_admin = false
@@ -38,17 +38,17 @@ function channel:action(msg, config)
-- this plugin will also be ready :P
-- Also, URL buttons work!? Maybe beta?
if reply_markup:match('"callback_data":"') then
utilities.send_reply(self, msg, 'callback_data ist in Buttons nicht erlaubt.')
utilities.send_reply(msg, 'callback_data ist in Buttons nicht erlaubt.')
return
elseif reply_markup:match('"switch_inline_query":"') then
utilities.send_reply(self, msg, 'switch_inline_query ist in Buttons nicht erlaubt.')
utilities.send_reply(msg, 'switch_inline_query ist in Buttons nicht erlaubt.')
return
end
else
text = matches[2]
reply_markup = nil
end
local success, result = utilities.send_message(self, chat_id, text, true, nil, true, reply_markup)
local success, result = utilities.send_message(chat_id, text, true, nil, true, reply_markup)
if success then
output = 'Deine Nachricht wurde versendet!'
else
@@ -60,7 +60,7 @@ function channel:action(msg, config)
else
output = 'Sorry, ich konnte die Administratorenliste nicht abrufen!\n`'..gca_results.description..'`'
end
utilities.send_reply(self, msg, output, true)
utilities.send_reply(msg, output, true)
end
return channel

View File

@@ -47,7 +47,7 @@ function channels:disable_channel(msg)
end
end
function channels:pre_process(msg, self, config)
function channels:pre_process(msg, config)
-- If is sudo can reeanble the channel
if is_sudo(msg, config) then
if msg.text == "/channel enable" then
@@ -57,9 +57,7 @@ function channels:pre_process(msg, self, config)
if channels:is_channel_disabled(msg) then
print('Channel wurde deaktiviert')
msg.text = ''
msg.text_lower = ''
msg.entities = ''
return
end
return msg
@@ -67,18 +65,18 @@ end
function channels:action(msg, config, matches)
if msg.from.id ~= config.admin then
utilities.send_reply(self, msg, config.errors.sudo)
utilities.send_reply(msg, config.errors.sudo)
return
end
-- Enable a channel
if matches[1] == 'enable' then
utilities.send_reply(self, msg, channels:enable_channel(msg))
utilities.send_reply(msg, channels:enable_channel(msg))
return
end
-- Disable a channel
if matches[1] == 'disable' then
utilities.send_reply(self, msg, channels:disable_channel(msg))
utilities.send_reply(msg, channels:disable_channel(msg))
return
end
end

View File

@@ -20,10 +20,10 @@ end
function chucknorris:action(msg, config)
local text = chucknorris:get_joke()
if not text then
utilities.send_reply(self, msg, config.errors.connection)
utilities.send_reply(msg, config.errors.connection)
return
end
utilities.send_reply(self, msg, unescape(text))
utilities.send_reply(msg, unescape(text))
end
return chucknorris

View File

@@ -11,17 +11,17 @@ end
cleverbot.command = 'cbot <Text>'
function cleverbot:action(msg, config, matches)
utilities.send_typing(self, msg.chat.id, 'typing')
utilities.send_typing(msg.chat.id, 'typing')
local text = matches[1]
local query, code = https.request(cleverbot.url..URL.escape(text))
if code ~= 200 then
utilities.send_reply(self, msg, 'Ich möchte jetzt nicht reden...')
utilities.send_reply(msg, 'Ich möchte jetzt nicht reden...')
return
end
local data = json.decode(query)
if not data.clever then
utilities.send_reply(self, msg, 'Ich möchte jetzt nicht reden...')
utilities.send_reply(msg, 'Ich möchte jetzt nicht reden...')
return
end
@@ -32,7 +32,7 @@ function cleverbot:action(msg, config, matches)
local answer = string.gsub(answer, "&Uuml;", "Ü")
local answer = string.gsub(answer, "&uuml;", "ü")
local answer = string.gsub(answer, "&szlig;", "ß")
utilities.send_reply(self, msg, answer)
utilities.send_reply(msg, answer)
end
return cleverbot

View File

@@ -19,10 +19,10 @@ function clypit:get_clypit_details(shortcode)
end
function clypit:action(msg, config, matches)
utilities.send_typing(self, msg.chat.id, 'upload_audio')
utilities.send_typing(msg.chat.id, 'upload_audio')
local audio, title, duration = clypit:get_clypit_details(matches[1])
if not audio then return utilities.send_reply(self, msg, config.errors.connection) end
utilities.send_audio(self, msg.chat.id, audio, nil, msg.message_id, duration, nil, title)
if not audio then return utilities.send_reply(msg, config.errors.connection) end
utilities.send_audio(msg.chat.id, audio, nil, msg.message_id, duration, nil, title)
end
return clypit

View File

@@ -32,22 +32,22 @@ function control:action(msg, config)
config[k] = v
end
end
bot.init(self, config)
utilities.send_reply(self, msg, 'Bot neu gestartet!')
bot.init(config)
utilities.send_reply(msg, 'Bot neu gestartet!')
elseif msg.text_lower:match('^'..cmd_pat..'halt') then
self.is_started = false
utilities.send_reply(self, msg, 'Stoppe Bot!')
utilities.send_reply(msg, 'Stoppe Bot!')
elseif msg.text_lower:match('^'..cmd_pat..'script') then
local input = msg.text_lower:match('^'..cmd_pat..'script\n(.+)')
if not input then
utilities.send_reply(self, msg, 'usage: ```\n'..cmd_pat..'script\n'..cmd_pat..'command <arg>\n...\n```', true)
utilities.send_reply(msg, 'usage: ```\n'..cmd_pat..'script\n'..cmd_pat..'command <arg>\n...\n```', true)
return
end
input = input .. '\n'
for command in input:gmatch('(.-)\n') do
command = utilities.trim(command)
msg.text = command
bot.on_msg_receive(self, msg, config)
bot.on_msg_receive(msg, config)
end
end

View File

@@ -13,18 +13,18 @@ cowsay.command = 'cowsay <Text>'
function cowsay:inline_callback(inline_query, config, matches)
local input = matches[1]
if string.match(input, '"') then utilities.answer_inline_query(self, inline_query) return end
if string.match(input, '"') then abort_inline_query(inline_query) return end
local text = '```'..run_command('cowsay "'..input..'"')..'```'
local text = text:gsub('\\', '\\\\')
local results = '[{"type":"article","id":"7912","title":"Muh!","input_message_content":{"message_text":"'..text..'","parse_mode":"Markdown"}}]'
utilities.answer_inline_query(self, inline_query, results, 2)
utilities.answer_inline_query(inline_query, results, 2)
end
function cowsay:action(msg, config)
local input = utilities.input_from_msg(msg)
if not input then
utilities.send_reply(self, msg, cowsay.doc, true)
utilities.send_reply(msg, cowsay.doc, true)
return
end
@@ -34,7 +34,7 @@ function cowsay:action(msg, config)
text = '```'..run_command('cowsay "'..input..'"')..'```'
end
utilities.send_reply(self, msg, text, true)
utilities.send_reply(msg, text, true)
end
return cowsay

View File

@@ -90,31 +90,31 @@ end
function creds_manager:action(msg, config, matches)
local receiver = msg.from.id
if receiver ~= config.admin then
utilities.send_reply(self, msg, config.errors.sudo)
utilities.send_reply(msg, config.errors.sudo)
return
end
if msg.chat.type ~= 'private' then
utilities.send_reply(self, msg, 'Dieses Plugin solltest du nur [privat](http://telegram.me/' .. self.info.username .. '?start=creds) verwenden!', true)
utilities.send_reply(msg, 'Dieses Plugin solltest du nur [privat](http://telegram.me/' .. self.info.username .. '?start=creds) verwenden!', true)
return
end
if matches[1] == "/creds" then
utilities.send_reply(self, msg, creds_manager:list_creds())
utilities.send_reply(msg, creds_manager:list_creds())
return
elseif matches[1] == "/creds add" then
local var = string.lower(string.sub(matches[2], 1, 50))
local key = string.sub(matches[3], 1, 1000)
utilities.send_reply(self, msg, creds_manager:add_creds(var, key))
utilities.send_reply(msg, creds_manager:add_creds(var, key))
return
elseif matches[1] == "/creds del" then
local var = string.lower(matches[2])
utilities.send_reply(self, msg, creds_manager:del_creds(var))
utilities.send_reply(msg, creds_manager:del_creds(var))
return
elseif matches[1] == "/creds rename" then
local var = string.lower(string.sub(matches[2], 1, 50))
local newvar = string.lower(string.sub(matches[3], 1, 1000))
utilities.send_reply(self, msg, creds_manager:rename_creds(var, newvar))
utilities.send_reply(msg, creds_manager:rename_creds(var, newvar))
return
end
end

View File

@@ -39,7 +39,7 @@ function currency:inline_callback(inline_query, config, matches)
end
local value, iserr = currency:convert_money(base, to, amount)
if iserr then utilities.answer_inline_query(self, inline_query) return end
if iserr then abort_inline_query(inline_query) return end
local output = amount..' '..base..' = *'..value..' '..to..'*'
if tonumber(amount) == 1 then
@@ -48,7 +48,7 @@ function currency:inline_callback(inline_query, config, matches)
title = amount..' '..base..' entsprechen'
end
local results = '[{"type":"article","id":"20","title":"'..title..'","description":"'..value..' '..to..'","thumb_url":"https://anditest.perseus.uberspace.de/inlineQuerys/currency/cash.jpg","thumb_width":157,"thumb_height":140,"input_message_content":{"message_text":"'..output..'","parse_mode":"Markdown"}}]'
utilities.answer_inline_query(self, inline_query, results, 3600)
utilities.answer_inline_query(inline_query, results, 3600)
end
function currency:convert_money(base, to, amount)
@@ -83,7 +83,7 @@ end
function currency:action(msg, config, matches)
if matches[1] == '/cash' then
utilities.send_reply(self, msg, currency.doc, true)
utilities.send_reply(msg, currency.doc, true)
return
elseif not matches[2] then -- first pattern
base = 'EUR'
@@ -100,24 +100,24 @@ function currency:action(msg, config, matches)
end
if from == to then
utilities.send_reply(self, msg, 'Jaja, sehr witzig...')
utilities.send_reply(msg, 'Jaja, sehr witzig...')
return
end
local value = currency:convert_money(base, to, amount)
if value == 'NOCONNECT' then
utilities.send_reply(self, msg, config.errors.connection)
utilities.send_reply(msg, config.errors.connection)
return
elseif value == 'WRONGBASE' then
utilities.send_reply(self, msg, 'Keine gültige Basiswährung.')
utilities.send_reply(msg, 'Keine gültige Basiswährung.')
return
elseif value == 'WRONGCONVERTRATE' then
utilities.send_reply(self, msg, 'Keine gültige Umwandlungswährung.')
utilities.send_reply(msg, 'Keine gültige Umwandlungswährung.')
return
end
local output = amount..' '..base..' = *'..value..' '..to..'*'
utilities.send_reply(self, msg, output, true)
utilities.send_reply(msg, output, true)
end
return currency

View File

@@ -20,8 +20,8 @@ end
function dailymotion:action(msg, config, matches)
local text = dailymotion:send_dailymotion_info(matches[1])
if not text then utilities.send_reply(self, msg, config.errors.connection) return end
utilities.send_reply(self, msg, text, true)
if not text then utilities.send_reply(msg, config.errors.connection) return end
utilities.send_reply(msg, text, true)
end
return dailymotion

View File

@@ -47,13 +47,13 @@ end
function danbooru:action(msg, config, matches)
if matches[1] == 'danbooru.donmai.us' and matches[2] then
local url = danbooru:get_specific_post(matches[2])
if not url then utilities.send_reply(self, msg, config.errors.connection) return end
utilities.send_typing(self, msg.chat.id, 'upload_photo')
if not url then utilities.send_reply(msg, config.errors.connection) return end
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(url)
if string.ends(url, ".gif") or string.ends(url, ".zip") or string.ends(url, ".webm") then
utilities.send_document(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_document(msg.chat.id, file, nil, msg.message_id)
else
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
end
return
end
@@ -81,12 +81,12 @@ function danbooru:action(msg, config, matches)
if post then
local download_url = BASE_URL..post.large_file_url
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local img = download_to_file(download_url)
if string.ends(download_url, ".gif") or string.ends(download_url, ".zip") or string.ends(download_url, ".webm") then
utilities.send_document(self, msg.chat.id, img, nil, msg.message_id)
utilities.send_document(msg.chat.id, img, nil, msg.message_id)
else
utilities.send_photo(self, msg.chat.id, img, nil, msg.message_id)
utilities.send_photo(msg.chat.id, img, nil, msg.message_id)
end
local txt = ''
@@ -100,11 +100,11 @@ function danbooru:action(msg, config, matches)
txt = txt .. '[' .. math.ceil(post.file_size/1000) .. 'kb] ' .. BASE_URL .. post.file_url
end
if txt ~= '' then
utilities.send_reply(self, msg, txt)
utilities.send_reply(msg, txt)
end
return
else
utilities.send_reply(self, msg, config.errors.results)
utilities.send_reply(msg, config.errors.results)
return
end
end

View File

@@ -26,18 +26,18 @@ end
function derpibooru:action(msg, config)
local input = utilities.input_from_msg(msg)
if not input then
utilities.send_reply(self, msg, derpibooru.doc, true)
utilities.send_reply(msg, derpibooru.doc, true)
return
end
local tag = string.gsub(input, " ", '+' )
local url, source = derpibooru:get_dp(tag)
if not url then
utilities.send_reply(self, msg, config.errors.results)
utilities.send_reply(msg, config.errors.results)
return
end
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(url)
utilities.send_photo(self, msg.chat.id, file, source, msg.message_id)
utilities.send_photo(msg.chat.id, file, source, msg.message_id)
end
return derpibooru

View File

@@ -32,18 +32,18 @@ end
function derpibooru_nsfw:action(msg, config)
local input = utilities.input_from_msg(msg)
if not input then
utilities.send_reply(self, msg, derpibooru_nsfw.doc, true)
utilities.send_reply(msg, derpibooru_nsfw.doc, true)
return
end
local tag = string.gsub(input, " ", '+' )
local url, source = derpibooru_nsfw:get_dp(tag)
if not url then
utilities.send_reply(self, msg, config.errors.results)
utilities.send_reply(msg, config.errors.results)
return
end
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(url)
utilities.send_photo(self, msg.chat.id, file, source, msg.message_id)
utilities.send_photo(msg.chat.id, file, source, msg.message_id)
end
return derpibooru_nsfw

View File

@@ -34,13 +34,13 @@ end
function deviantart:action(msg, config, matches)
local data = deviantart:get_da_data('http://'..matches[1]..'.deviantart.com/art/'..matches[2])
if not data then utilities.send_reply(self, msg, config.errors.connection) return end
if not data then utilities.send_reply(msg, config.errors.connection) return end
local text, file = deviantart:send_da_data(data)
if file then
utilities.send_photo(self, msg.chat.id, file, text, msg.message_id)
utilities.send_photo(msg.chat.id, file, text, msg.message_id)
else
utilities.send_reply(self, msg, text)
utilities.send_reply(msg, text)
return
end
end

View File

@@ -28,7 +28,7 @@ end
function dhl:action(msg, config, matches)
local sendungs_id = matches[1]
if string.len(sendungs_id) < 8 then return end
utilities.send_reply(self, msg, dhl:sendungsstatus(sendungs_id), true)
utilities.send_reply(msg, dhl:sendungsstatus(sendungs_id), true)
end
return dhl

View File

@@ -12,19 +12,19 @@ dogify.command = 'dogify text/den/du/willst'
function dogify:action(msg, config, matches)
local input = utilities.input_from_msg(msg)
if not input then
utilities.send_reply(self, msg, dogify.doc, true)
utilities.send_reply(msg, dogify.doc, true)
return
end
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local path = input:gsub(" ", "%%20")
local photo_url = 'http://dogr.io/'..path..'.png?split=false&.png'
local file = download_to_file(photo_url)
if not file then
utilities.send_reply(self, msg, config.errors.connection)
utilities.send_reply(msg, config.errors.connection)
return
end
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
end
return dogify

View File

@@ -13,18 +13,18 @@ function dropbox:action(msg, config, matches)
local v,code = https.request(link)
if code == 200 then
if string.ends(link, '.png') or string.ends(link, '.jpe?g')then
utilities.send_typing(self, msg.chat.id, 'upload_photo')
if string.ends(link, ".png") or string.ends(link, ".jpe?g")then
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(link)
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
return
elseif string.ends(link, '.webp') or string.ends(link, '.gif') then
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(link)
utilities.send_document(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_document(msg.chat.id, file, nil, msg.message_id)
return
else
utilities.send_reply(self, msg, link)
utilities.send_reply(msg, link)
end
return
else

View File

@@ -24,17 +24,17 @@ end
function e621:action(msg, config)
local input = utilities.input_from_msg(msg)
if not input then
utilities.send_reply(self, msg, e621.doc, true)
utilities.send_reply(msg, e621.doc, true)
return
end
local url = e621:get_e621(input)
if not url then
utilities.send_reply(self, msg, config.errors.results)
utilities.send_reply(msg, config.errors.results)
return
end
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(url)
utilities.send_photo(self, msg.chat.id, file, url, msg.message_id)
utilities.send_photo(msg.chat.id, file, url, msg.message_id)
end
return e621

View File

@@ -22,18 +22,18 @@ function echo:inline_callback(inline_query, config, matches)
end
local results = results..'{"type":"article","id":"4","thumb_url":"https://anditest.perseus.uberspace.de/inlineQuerys/echo/fett.jpg","title":"Fett","description":"*'..text..'*","input_message_content":{"message_text":"<b>'..text..'</b>","parse_mode":"HTML"}},{"type":"article","id":"5","thumb_url":"https://anditest.perseus.uberspace.de/inlineQuerys/echo/kursiv.jpg","title":"Kursiv","description":"_'..text..'_","input_message_content":{"message_text":"<i>'..text..'</i>","parse_mode":"HTML"}},{"type":"article","id":"6","thumb_url":"https://anditest.perseus.uberspace.de/inlineQuerys/echo/fixedsys.jpg","title":"Feste Breite","description":"`'..text..'`","input_message_content":{"message_text":"<code>'..text..'</code>","parse_mode":"HTML"}}]'
utilities.answer_inline_query(self, inline_query, results, 0)
utilities.answer_inline_query(inline_query, results, 0)
end
function echo:action(msg)
local input = utilities.input_from_msg(msg)
if not input then
utilities.send_message(self, msg.chat.id, echo.doc, true, msg.message_id, true)
utilities.send_message(msg.chat.id, echo.doc, true, msg.message_id, true)
else
local output
if msg.chat.type == 'supergroup' then
output = '*Echo:*\n"' .. utilities.md_escape(input) .. '"'
utilities.send_message(self, msg.chat.id, output, true, nil, true)
utilities.send_message(msg.chat.id, output, true, nil, true)
return
elseif msg.chat.type == 'group' then
local b = 1
@@ -42,7 +42,7 @@ function echo:action(msg)
input,b = input:gsub('^/+','')
end
end
utilities.send_message(self, msg.chat.id, input, true, nil, true)
utilities.send_message(msg.chat.id, input, true, nil, true)
end
end

View File

@@ -27,7 +27,7 @@ function expand:inline_callback(inline_query, config, matches)
end
local results = '[{"type":"article","id":"7","title":"'..title..'","description":"'..description..'","url":"'..url..'","thumb_url":"https://anditest.perseus.uberspace.de/inlineQuerys/generic/internet.jpg","thumb_width":165,"thumb_height":150,"hide_url":true,"input_message_content":{"message_text":"'..url..'"}}]'
utilities.answer_inline_query(self, inline_query, results, 3600)
utilities.answer_inline_query(inline_query, results, 3600)
end
function expand:url(long_url)
@@ -47,10 +47,10 @@ end
function expand:action(msg, config, matches)
local ok, response_headers = expand:url(matches[1])
if ok and response_headers.location then
utilities.send_reply(self, msg, response_headers.location)
utilities.send_reply(msg, response_headers.location)
return
else
utilities.send_reply(self, msg, 'Fehler beim Erweitern der URL.')
utilities.send_reply(msg, "Fehler beim Erweitern der URL.")
return
end
end

View File

@@ -136,7 +136,7 @@ function facebook:action(msg, config, matches)
else
id = matches[4]
end
utilities.send_reply(self, msg, facebook:fb_post(id, story_id), 'HTML')
utilities.send_reply(msg, facebook:fb_post(id, story_id), 'HTML')
return
elseif matches[1] == 'photo' or matches[2] == 'photos' then
if not matches[4] then
@@ -146,10 +146,10 @@ function facebook:action(msg, config, matches)
end
local text, image_url = facebook:send_facebook_photo(photo_id, receiver)
if not image_url then return end
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(image_url, 'photo.jpg')
utilities.send_reply(self, msg, text, 'HTML')
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_reply(msg, text, 'HTML')
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
return
elseif matches[1] == 'video' or matches[2] == 'videos' then
if not matches[3] then
@@ -164,10 +164,10 @@ function facebook:action(msg, config, matches)
title = 'VIDEO: '..title
end
if not video_url then return end
utilities.send_reply(self, msg, output, 'HTML', '{"inline_keyboard":[[{"text":"'..utilities.md_escape(title)..'","url":"'..video_url..'"}]]}')
utilities.send_reply(msg, output, 'HTML', '{"inline_keyboard":[[{"text":"'..utilities.md_escape(title)..'","url":"'..video_url..'"}]]}')
return
else
utilities.send_reply(self, msg, facebook:facebook_info(matches[1]), 'HTML')
utilities.send_reply(msg, facebook:facebook_info(matches[1]), 'HTML')
return
end
end

View File

@@ -49,21 +49,21 @@ end
function flickr:action(msg, config, matches)
local data = flickr:get_flickr_photo_data(matches[2])
if not data then utilities.send_reply(self, msg, config.errors.connection) return end
if not data then utilities.send_reply(msg, config.errors.connection) return end
local text, image_url, isgif = flickr:send_flickr_photo_data(data)
if image_url then
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(image_url)
if isgif then
utilities.send_document(self, msg.chat.id, file, text, msg.message_id)
utilities.send_document(msg.chat.id, file, text, msg.message_id)
return
else
utilities.send_photo(self, msg.chat.id, file, text, msg.message_id)
utilities.send_photo(msg.chat.id, file, text, msg.message_id)
return
end
else
utilities.send_reply(self, msg, text)
utilities.send_reply(msg, text)
return
end
end

View File

@@ -32,15 +32,15 @@ end
function flickr_search:action(msg, config, matches)
local url = flickr_search:get_flickr(matches[1])
if not url then utilities.send_reply(self, msg, config.errors.results) return end
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(self, msg.chat.id, file, url)
if string.ends(url, ".gif") then
utilities.send_document(msg.chat.id, file, url)
return
else
utilities.send_photo(self, msg.chat.id, file, url)
utilities.send_photo(msg.chat.id, file, url)
return
end
end

View File

@@ -15,14 +15,14 @@ function flip:action(msg, config, matches)
local command = matches[1]
local text = matches[2]
if text:match('"') then
utilities.send_reply(self, msg, 'Vergiss es!')
utilities.send_reply(msg, 'Vergiss es!')
return
elseif command == 'flip' then
new_text = run_command('flip "'..text..'"')
elseif command == 'rev' then
new_text = run_command('echo "' .. text .. '" | rev')
end
utilities.send_reply(self, msg, new_text)
utilities.send_reply(msg, new_text)
end
return flip

View File

@@ -217,17 +217,17 @@ function forecast:inline_callback(inline_query, config, matches)
end
local lat, lng = get_city_coordinates(city, config)
if not lat and not lng then utilities.answer_inline_query(self, inline_query) return end
if not lat and not lng then abort_inline_query(inline_query) return end
if matches[1] == 'f' then
title, description, text, ttl = forecast:get_forecast(lat, lng, true)
else
title, description, text, ttl = forecast:get_forecast_hourly(lat, lng, true)
end
if not title and not description and not text and not ttl then utilities.answer_inline_query(self, inline_query) return end
if not title and not description and not text and not ttl then abort_inline_query(inline_query) return end
local text = text:gsub('\n', '\\n')
local results = '[{"type":"article","id":"28062013","title":"'..title..'","description":"'..description..'","thumb_url":"https://anditest.perseus.uberspace.de/inlineQuerys/weather/cloudy.jpg","thumb_width":80,"thumb_height":80,"input_message_content":{"message_text":"'..text..'", "parse_mode":"Markdown"}}]'
utilities.answer_inline_query(self, inline_query, results, ttl, is_personal)
utilities.answer_inline_query(inline_query, results, ttl, is_personal)
end
function forecast:action(msg, config, matches)
@@ -246,7 +246,7 @@ function forecast:action(msg, config, matches)
local lat, lng = get_city_coordinates(city, config)
if not lat and not lng then
utilities.send_reply(self, msg, '*Diesen Ort gibt es nicht!*', true)
utilities.send_reply(msg, '*Diesen Ort gibt es nicht!*', true)
return
end
@@ -258,7 +258,7 @@ function forecast:action(msg, config, matches)
if not text then
text = '*Konnte die Wettervorhersage für diese Stadt nicht bekommen.*'
end
utilities.send_reply(self, msg, text, true)
utilities.send_reply(msg, text, true)
end
return forecast

View File

@@ -29,8 +29,8 @@ gImages.command = 'img <Suchbegriff>'
-- Yes, the callback is copied from below, but I can't think of another method :\
function gImages: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')
utilities.answer_callback_query(callback, 'Suche nochmal nach "'..URL.unescape(input)..'"')
utilities.send_typing(msg.chat.id, 'upload_photo')
local hash = 'telegram:cache:gImages'
local results = redis:smembers(hash..':'..string.lower(URL.unescape(input)))
@@ -38,10 +38,10 @@ function gImages:callback(callback, msg, self, config, input)
print('doing web request')
results = gImages:get_image(input)
if results == 403 then
utilities.send_reply(self, msg, config.errors.quotaexceeded, true)
utilities.send_reply(msg, config.errors.quotaexceeded, true)
return
elseif not results then
utilities.send_reply(self, msg, config.errors.results, true)
utilities.send_reply(msg, config.errors.results, true)
return
end
gImages:cache_result(results, input)
@@ -89,18 +89,18 @@ function gImages:callback(callback, msg, self, config, input)
end
if failed then
utilities.send_reply(self, msg, 'Fehler beim Herunterladen eines Bildes.', true)
utilities.send_reply(msg, 'Fehler beim Herunterladen eines Bildes.', true)
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:'..input..'"}]]}')
result = utilities.send_document(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:'..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:'..input..'"}]]}')
result = utilities.send_photo(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:'..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:'..input..'"}]]}')
utilities.send_reply(msg, config.errors.connection, true, '{"inline_keyboard":[[{"text":"Nochmal versuchen","callback_data":"@'..self.info.username..' gImages:'..input..'"}]]}')
return
end
end
@@ -147,18 +147,18 @@ function gImages:action(msg, config, matches)
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.doc, true, msg.message_id, true)
utilities.send_message(msg.chat.id, gImages.doc, true, msg.message_id, true)
return
end
end
print ('Überprüfe, ob das Wort auf der Blackliste steht: '..input)
if is_blacklisted(input) then
utilities.send_reply(self, msg, 'Vergiss es!')
utilities.send_reply(msg, 'Vergiss es!')
return
end
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local hash = 'telegram:cache:gImages'
local results = redis:smembers(hash..':'..string.lower(input))
@@ -167,10 +167,10 @@ function gImages:action(msg, config, matches)
print('doing web request')
results = gImages:get_image(URL.escape(input))
if results == 403 then
utilities.send_reply(self, msg, config.errors.quotaexceeded, true)
utilities.send_reply(msg, config.errors.quotaexceeded, true)
return
elseif not results or results == 'NORESULTS' then
utilities.send_reply(self, msg, config.errors.results, true)
utilities.send_reply(msg, config.errors.results, true)
return
end
gImages:cache_result(results, input)
@@ -218,18 +218,18 @@ function gImages:action(msg, config, matches)
end
if failed then
utilities.send_reply(self, msg, 'Fehler beim Herunterladen eines Bildes.', true)
utilities.send_reply(msg, 'Fehler beim Herunterladen eines Bildes.', true)
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:'..URL.escape(input)..'"}]]}')
result = utilities.send_document(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:'..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:'..URL.escape(input)..'"}]]}')
result = utilities.send_photo(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:'..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:'..URL.escape(input)..'"}]]}')
utilities.send_reply(msg, config.errors.connection, true, '{"inline_keyboard":[[{"text":"Nochmal versuchen","callback_data":"@'..self.info.username..' gImages:'..URL.escape(input)..'"}]]}')
return
end
end

View File

@@ -29,8 +29,8 @@ gImages_nsfw.command = 'img2 <Suchbegriff>'
-- 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')
utilities.answer_callback_query(callback, 'Suche nochmal nach "'..URL.unescape(input)..'"')
utilities.send_typing(msg.chat.id, 'upload_photo')
local hash = 'telegram:cache:gImages_nsfw'
local results = redis:smembers(hash..':'..string.lower(URL.unescape(input)))
@@ -38,10 +38,10 @@ function gImages_nsfw:callback(callback, msg, self, config, input)
print('doing web request')
results = gImages_nsfw:get_image(input)
if results == 403 then
utilities.send_reply(self, msg, config.errors.quotaexceeded, true)
utilities.send_reply(msg, config.errors.quotaexceeded, true)
return
elseif not results then
utilities.send_reply(self, msg, config.errors.results, true)
utilities.send_reply(msg, config.errors.results, true)
return
end
gImages_nsfw:cache_result(results, input)
@@ -89,18 +89,18 @@ function gImages_nsfw:callback(callback, msg, self, config, input)
end
if failed then
utilities.send_reply(self, msg, 'Fehler beim Herunterladen eines Bildes.', true)
utilities.send_reply(msg, 'Fehler beim Herunterladen eines Bildes.', true)
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..'"}]]}')
result = utilities.send_document(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..'"}]]}')
result = utilities.send_photo(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..'"}]]}')
utilities.send_reply(msg, config.errors.connection, true, '{"inline_keyboard":[[{"text":"Nochmal versuchen","callback_data":"@'..self.info.username..' gImages_nsfw:'..input..'"}]]}')
return
end
end
@@ -147,18 +147,18 @@ function gImages_nsfw:action(msg, config, matches)
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)
utilities.send_message(msg.chat.id, gImages_nsfw.doc, true, msg.message_id, true)
return
end
end
print ('Überprüfe, ob das Wort auf der Blackliste steht: '..input)
if is_blacklisted(input) then
utilities.send_reply(self, msg, 'Vergiss es!')
utilities.send_reply(msg, 'Vergiss es!')
return
end
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local hash = 'telegram:cache:gImages_nsfw'
local results = redis:smembers(hash..':'..string.lower(input))
@@ -167,10 +167,10 @@ function gImages_nsfw:action(msg, config, matches)
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)
utilities.send_reply(msg, config.errors.quotaexceeded, true)
return
elseif not results or results == 'NORESULTS' then
utilities.send_reply(self, msg, config.errors.results, true)
utilities.send_reply(msg, config.errors.results, true)
return
end
gImages_nsfw:cache_result(results, input)
@@ -218,18 +218,18 @@ function gImages_nsfw:action(msg, config, matches)
end
if failed then
utilities.send_reply(self, msg, 'Fehler beim Herunterladen eines Bildes.', true)
utilities.send_reply(msg, 'Fehler beim Herunterladen eines Bildes.', true)
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)..'"}]]}')
result = utilities.send_document(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)..'"}]]}')
result = utilities.send_photo(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)..'"}]]}')
utilities.send_reply(msg, config.errors.connection, true, '{"inline_keyboard":[[{"text":"Nochmal versuchen","callback_data":"@'..self.info.username..' gImages_nsfw:'..URL.escape(input)..'"}]]}')
return
end
end

View File

@@ -22,29 +22,29 @@ end
function gMaps:inline_callback(inline_query, config, matches)
local place = matches[1]
local coords = utilities.get_coords(place, config)
if type(coords) == 'string' then utilities.answer_inline_query(self, inline_query) return end
if type(coords) == 'string' then abort_inline_query(inline_query) return end
local results = '[{"type":"venue","id":"10","latitude":'..coords.lat..',"longitude":'..coords.lon..',"title":"Ort","address":"'..coords.addr..'"}]'
utilities.answer_inline_query(self, inline_query, results, 10000)
utilities.answer_inline_query(inline_query, results, 10000)
end
function gMaps:action(msg, config)
local input = utilities.input_from_msg(msg)
if not input then
utilities.send_reply(self, msg, gMaps.doc, true)
utilities.send_reply(msg, gMaps.doc, true)
return
end
utilities.send_typing(self, msg.chat.id, 'find_location')
utilities.send_typing(msg.chat.id, 'find_location')
local coords = utilities.get_coords(input, config)
if type(coords) == 'string' then
utilities.send_reply(self, msg, coords)
utilities.send_reply(msg, coords)
return
end
utilities.send_location(self, msg.chat.id, coords.lat, coords.lon, msg.message_id)
utilities.send_photo(self, msg.chat.id, gMaps:get_staticmap(input, coords.lat, coords.lon), nil, msg.message_id)
utilities.send_location(msg.chat.id, coords.lat, coords.lon, msg.message_id)
utilities.send_photo(msg.chat.id, gMaps:get_staticmap(input, coords.lat, coords.lon), nil, msg.message_id)
end
return gMaps

View File

@@ -23,7 +23,7 @@ function gSearch:googlethat(query, config)
return '403'
end
if code ~= 200 then
utilities.send_reply(self, msg, config.errors.connection)
utilities.send_reply(msg, config.errors.connection)
return
end
local data = json.decode(res)
@@ -53,22 +53,22 @@ end
function gSearch:action(msg, config)
local input = utilities.input_from_msg(msg)
if not input then
utilities.send_reply(self, msg, gSearch.doc, true)
utilities.send_reply(msg, gSearch.doc, true)
return
end
local results, stats = gSearch:googlethat(input, onfig)
if results == '403' then
utilities.send_reply(self, msg, config.errors.quotaexceeded)
utilities.send_reply(msg, config.errors.quotaexceeded)
return
end
if not results then
utilities.send_reply(self, msg, config.errors.results)
utilities.send_reply(msg, config.errors.results)
return
end
utilities.send_message(self, msg.chat.id, gSearch:stringlinks(results, stats), true, nil, true, '{"inline_keyboard":[[{"text":"Alle Ergebnisse anzeigen","url":"https://www.google.com/search?q='..URL.escape(input)..'"}]]}')
utilities.send_message(msg.chat.id, gSearch:stringlinks(results, stats), true, nil, true, '{"inline_keyboard":[[{"text":"Alle Ergebnisse anzeigen","url":"https://www.google.com/search?q='..URL.escape(input)..'"}]]}')
end

View File

@@ -48,7 +48,7 @@ function games:send_game_photo(result, self, msg)
for k, v in pairs(images) do
i = i+1
local file = download_to_file(v, 'game'..i..'.jpg')
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
end
end
@@ -113,10 +113,10 @@ function games:send_game_data(game_id, self, msg)
end
local text = '*'..title..'* für *'..platform..'*'..date..desc..genre..players..video..publisher
utilities.send_reply(self, msg, text, true)
utilities.send_reply(msg, text, true)
if xml.find(result, 'boxart') then
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
games:send_game_photo(result, self, msg)
end
return
@@ -128,14 +128,14 @@ function games:action(msg, config)
if msg.reply_to_message and msg.reply_to_message.text then
game = msg.reply_to_message.text
else
utilities.send_message(self, msg.chat.id, fun.doc, true, msg.message_id, true)
utilities.send_message(msg.chat.id, fun.doc, true, msg.message_id, true)
return
end
end
local game_id = games:get_game_id(game)
if not game_id then
utilities.send_reply(self, msg, 'Spiel nicht gefunden!')
utilities.send_reply(msg, 'Spiel nicht gefunden!')
return
else
games:send_game_data(game_id, self, msg)

View File

@@ -38,15 +38,15 @@ function gdrive:send_drive_document_data(data, self, msg)
if mimetype:match('google') then -- if document is Google document (like a Spreadsheet)
if mimetype:match('drawing') then -- Drawing
local image_url = BASE_URL..'/files/'..id..'/export?key='..apikey..'&mimeType=image/png'
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(image_url, 'export.png')
utilities.send_photo(self, msg.chat.id, file, text, msg.message_id)
utilities.send_photo(msg.chat.id, file, text, msg.message_id)
return
else
local pdf_url = BASE_URL..'/files/'..id..'/export?key='..apikey..'&mimeType=application/pdf'
utilities.send_typing(self, msg.chat.id, 'upload_document')
utilities.send_typing(msg.chat.id, 'upload_document')
local file = download_to_file(pdf_url, 'document.pdf')
utilities.send_document(self, msg.chat.id, file, text, msg.message_id)
utilities.send_document(msg.chat.id, file, text, msg.message_id)
return
end
else
@@ -65,19 +65,19 @@ function gdrive:send_drive_document_data(data, self, msg)
local headers = response[3]
local file_url = headers.location
if ext == "jpg" or ext == "jpeg" or ext == "png" then
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(file_url, 'photo.'..ext)
utilities.send_photo(self, msg.chat.id, file, text, msg.message_id, keyboard)
utilities.send_photo(msg.chat.id, file, text, msg.message_id, keyboard)
return
else
utilities.send_typing(self, msg.chat.id, 'upload_document')
utilities.send_typing(msg.chat.id, 'upload_document')
local file = download_to_file(file_url, 'document.'..ext)
utilities.send_document(self, msg.chat.id, file, text, msg.message_id, keyboard)
utilities.send_document(msg.chat.id, file, text, msg.message_id, keyboard)
return
end
else
local text = '*'..title..'*, freigegeben von _'..owner..'_'
utilities.send_reply(self, msg, text, true, keyboard)
utilities.send_reply(msg, text, true, keyboard)
return
end
end
@@ -86,7 +86,7 @@ end
function gdrive:action(msg, config, matches)
local docid = matches[2]
local data = gdrive:get_drive_document_data(docid)
if not data then utilities.send_reply(self, msg, config.errors.connection) return end
if not data then utilities.send_reply(msg, config.errors.connection) return end
gdrive:send_drive_document_data(data, self, msg)
return
end

View File

@@ -50,7 +50,7 @@ function get:action(msg)
output = get:list_variables(msg)
end
utilities.send_message(self, msg.chat.id, output, true, nil, true)
utilities.send_message(msg.chat.id, output, true, nil, true)
end
return get

View File

@@ -10,17 +10,17 @@ get_data.command = 'me'
function get_data:action(msg, config)
local input = utilities.input_from_msg(msg)
if not input then
utilities.send_reply(self, msg, get_data.doc, true)
utilities.send_reply(msg, get_data.doc, true)
return
end
utilities.send_typing(self, msg.chat.id, 'upload_document')
utilities.send_typing(msg.chat.id, 'upload_document')
local file = download_to_file(input)
if not file then
utilities.send_reply(self, msg, config.errors.connection)
utilities.send_reply(msg, config.errors.connection)
return
end
utilities.send_document(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_document(msg.chat.id, file, nil, msg.message_id)
end
return get_data

View File

@@ -12,10 +12,10 @@ function get_txt:action(msg, config, matches)
end
local res, code = doer.request(url)
if code ~= 200 then
utilities.send_reply(self, msg, config.errors.connection)
utilities.send_reply(msg, config.errors.connection)
return
end
utilities.send_reply(self, msg, res)
utilities.send_reply(msg, res)
end
return get_txt

View File

@@ -31,7 +31,7 @@ function media_download:download_to_file_permanently(url, save_dir, file_name)
return true
end
function media_download:pre_process(msg, self, config)
function media_download:pre_process(msg, config)
if msg.photo then
local lv = #msg.photo -- find biggest photo, always the last value
file_id = msg.photo[lv].file_id
@@ -74,7 +74,7 @@ function media_download:pre_process(msg, self, config)
end
-- Saving file to the Telegram Cloud
local request = bindings.request(self, 'getFile', {
local request = bindings.request('getFile', {
file_id = file_id
} )

View File

@@ -6,26 +6,26 @@ gfycat.triggers = {
"gfycat.com/([A-Za-z0-9-_-]+)"
}
function gfycat:send_gfycat_video(name, self, msg)
function gfycat:send_gfycat_video(name, msg)
local BASE_URL = "https://gfycat.com"
local url = BASE_URL..'/cajax/get/'..name
local res,code = https.request(url)
if code ~= 200 then return "HTTP-FEHLER" end
local data = json.decode(res).gfyItem
utilities.send_typing(self, msg.chat.id, 'upload_video')
utilities.send_typing(msg.chat.id, 'upload_video')
local file = download_to_file(data.webmUrl)
if file == nil then
send_reply(self, msg, 'Fehler beim Herunterladen von '..name)
send_reply(msg, 'Fehler beim Herunterladen von '..name)
return
else
utilities.send_video(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_video(msg.chat.id, file, nil, msg.message_id)
return
end
end
function gfycat:action(msg, config, matches)
local name = matches[1]
gfycat:send_gfycat_video(name, self, msg)
gfycat:send_gfycat_video(name, msg)
return
end

View File

@@ -14,10 +14,10 @@ gifeye.command = 'ge <ID>'
function gifeye:action(msg, config, matches)
local url = 'http://i.gifeye.com/'..matches[1]..'.gif'
utilities.send_typing(self, msg.chat.id, 'upload_document')
utilities.send_typing(msg.chat.id, 'upload_document')
local file = download_to_file(url)
if not file then
utilities.send_reply(self, msg, config.errors.results)
utilities.send_reply(msg, config.errors.results)
return
end
@@ -26,7 +26,7 @@ function gifeye:action(msg, config, matches)
else
source = nil
end
utilities.send_document(self, msg.chat.id, file, source, msg.message_id)
utilities.send_document(msg.chat.id, file, source, msg.message_id)
end
return gifeye

View File

@@ -30,8 +30,8 @@ function giphy:inline_callback(inline_query, config, matches)
else
data = giphy:get_gifs(matches[2])
end
if not data then utilities.answer_inline_query(self, inline_query) return end
if not data[1] then utilities.answer_inline_query(self, inline_query) return end
if not data then abort_inline_query(inline_query) return end
if not data[1] then abort_inline_query(inline_query) return end
local results = '['
local id = 450
@@ -43,7 +43,7 @@ function giphy:inline_callback(inline_query, config, matches)
end
end
local results = results..']'
utilities.answer_inline_query(self, inline_query, results, 3600)
utilities.answer_inline_query(inline_query, results, 3600)
end
function giphy:action()

View File

@@ -63,7 +63,7 @@ function github:action(msg, config, matches)
else
output = github:send_gh_commit_data(gh_code, gh_commit_sha, data)
end
utilities.send_reply(self, msg, output, true)
utilities.send_reply(msg, output, true)
end
return github

View File

@@ -181,42 +181,42 @@ function gh_feed:action(msg, config, matches)
-- For channels
if matches[1] == 'sub' and matches[2] and matches[3] then
if msg.from.id ~= config.admin then
utilities.send_reply(self, msg, config.errors.sudo)
utilities.send_reply(msg, config.errors.sudo)
return
end
local id = '@'..matches[3]
local result = utilities.get_chat_info(self, id)
local result = utilities.get_chat_info(id)
if not result then
utilities.send_reply(self, msg, 'Diesen Kanal gibt es nicht!')
utilities.send_reply(msg, 'Diesen Kanal gibt es nicht!')
return
end
local output = gh_feed:subscribe(id, matches[2])
utilities.send_reply(self, msg, output, true)
utilities.send_reply(msg, output, true)
return
elseif matches[1] == 'del' and matches[2] and matches[3] then
if msg.from.id ~= config.admin then
utilities.send_reply(self, msg, config.errors.sudo)
utilities.send_reply(msg, config.errors.sudo)
return
end
local id = '@'..matches[3]
local result = utilities.get_chat_info(self, id)
local result = utilities.get_chat_info(id)
if not result then
utilities.send_reply(self, msg, 'Diesen Kanal gibt es nicht!')
utilities.send_reply(msg, 'Diesen Kanal gibt es nicht!')
return
end
local output = gh_feed:unsubscribe(id, matches[2])
utilities.send_reply(self, msg, output, true)
utilities.send_reply(msg, output, true)
return
elseif matches[1] == 'gh' and matches[2] then
local id = '@'..matches[2]
local result = utilities.get_chat_info(self, id)
local result = utilities.get_chat_info(id)
if not result then
utilities.send_reply(self, msg, 'Diesen Kanal gibt es nicht!')
utilities.send_reply(msg, 'Diesen Kanal gibt es nicht!')
return
end
local chat_name = result.result.title
local output = gh_feed:print_subs(id, chat_name)
utilities.send_reply(self, msg, output, true)
utilities.send_reply(msg, output, true)
return
end
@@ -228,42 +228,39 @@ function gh_feed:action(msg, config, matches)
if matches[1] == 'sub' and matches[2] then
if msg.from.id ~= config.admin then
utilities.send_reply(self, msg, config.errors.sudo)
utilities.send_reply(msg, config.errors.sudo)
return
end
local output = gh_feed:subscribe(id, matches[2])
utilities.send_reply(self, msg, output, true)
utilities.send_reply(msg, output, true)
return
elseif matches[1] == 'del' and matches[2] then
if msg.from.id ~= config.admin then
utilities.send_reply(self, msg, config.errors.sudo)
utilities.send_reply(msg, config.errors.sudo)
return
end
local output = gh_feed:unsubscribe(id, matches[2])
utilities.send_reply(self, msg, output, true, '{"hide_keyboard":true}')
utilities.send_reply(msg, output, true, '{"hide_keyboard":true}')
return
elseif matches[1] == 'del' and not matches[2] then
local list_subs, keyboard = gh_feed:print_subs(id, chat_name)
utilities.send_reply(self, msg, list_subs, true, keyboard)
utilities.send_reply(msg, list_subs, true, keyboard)
return
elseif matches[1] == 'sync' then
if msg.from.id ~= config.admin then
utilities.send_reply(self, msg, config.errors.sudo)
utilities.send_reply(msg, config.errors.sudo)
return
end
gh_feed:cron(self)
gh_feed:cron()
return
end
local output = gh_feed:print_subs(id, chat_name)
utilities.send_reply(self, msg, output, true)
utilities.send_reply(msg, output, true)
return
end
function gh_feed:cron(self_plz)
if not self.BASE_URL then
self = self_plz
end
function gh_feed:cron()
local keys = redis:keys(gh_feed_get_base_redis("*", "subs"))
for k,v in pairs(keys) do
local repo = string.match(v, "github:(.+):subs")
@@ -292,7 +289,7 @@ function gh_feed:cron(self_plz)
redis:set(gh_feed_get_base_redis(repo, "etag"), last_etag)
redis:set(gh_feed_get_base_redis(repo, "date"), last_date)
for k2, receiver in pairs(redis:smembers(v)) do
utilities.send_message(self, receiver, text, true, nil, true)
utilities.send_message(receiver, text, true, nil, true)
end
end
end

View File

@@ -25,10 +25,10 @@ end
function googl:inline_callback(inline_query, config, matches)
local shorturl = matches[1]
local text, longUrl = googl:send_googl_info(shorturl)
if not longUrl then utilities.answer_inline_query(self, inline_query) return end
if not longUrl then abort_inline_query(inline_query) return end
local results = '[{"type":"article","id":"9","title":"Verlängerte URL","description":"'..longUrl..'","url":"'..longUrl..'","thumb_url":"https://anditest.perseus.uberspace.de/inlineQuerys/generic/internet.jpg","thumb_width":165,"thumb_height":150,"hide_url":true,"input_message_content":{"message_text":"'..text..'"}}]'
utilities.answer_inline_query(self, inline_query, results, 1)
utilities.answer_inline_query(inline_query, results, 1)
end
function googl:send_googl_info (shorturl)
@@ -49,8 +49,8 @@ end
function googl:action(msg, config, matches)
local shorturl = matches[1]
local text = googl:send_googl_info(shorturl)
if not text then utilities.send_reply(self, msg, config.errors.connection) return end
utilities.send_reply(self, msg, text)
if not text then utilities.send_reply(msg, config.errors.connection) return end
utilities.send_reply(msg, text)
end
return googl

View File

@@ -27,11 +27,11 @@ function gps:inline_callback(inline_query, config, matches)
local results = '[{"type":"location","id":"8","latitude":'..lat..',"longitude":'..lon..',"title":"Standort"}]'
utilities.answer_inline_query(self, inline_query, results, 10000)
utilities.answer_inline_query(inline_query, results, 10000)
end
function gps:action(msg, config, matches)
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local lat = matches[1]
local lon = matches[2]
@@ -42,10 +42,10 @@ function gps:action(msg, config, matches)
local zoom = zooms[i]
local url = "https://maps.googleapis.com/maps/api/staticmap?zoom=" .. zoom .. "&size=600x300&maptype=hybrid&center=" .. lat .. "," .. lon .. "&markers=color:red%7Clabel:•%7C" .. lat .. "," .. lon
local file = download_to_file(url, 'zoom_'..i..'.png')
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
end
utilities.send_location(self, msg.chat.id, lat, lon, msg.message_id)
utilities.send_location(msg.chat.id, lat, lon, msg.message_id)
end
return gps

View File

@@ -6,7 +6,7 @@ hallo.triggers = {
function hallo:action(msg, config)
local name = msg.from.first_name
utilities.send_reply(self, msg, 'Hallo '..name..'!')
utilities.send_reply(msg, 'Hallo '..name..'!')
end
return hallo

View File

@@ -17,9 +17,9 @@ function hdf:action(msg, config)
"/hdf5.jpg"
}
local random_pic = math.random(#hdf_pics)
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(HDF_URL..hdf_pics[random_pic])
utilities.send_photo(self, msg.chat.id, file)
utilities.send_photo(msg.chat.id, file)
end
return hdf

View File

@@ -28,10 +28,10 @@ function help:inline_callback(inline_query, config, matches)
local doc = doc:gsub('\\n', '\\\n')
local chosen_plugin = utilities.get_word(plugin.command, 1)
local results = '[{"type":"article","id":"9","title":"Hilfe für '..chosen_plugin..'","description":"Hilfe für das Plugin \\"'..chosen_plugin..'\\" wird gepostet.","thumb_url":"https://anditest.perseus.uberspace.de/inlineQuerys/help/hilfe.jpg","input_message_content":{"message_text":"'..doc..'","parse_mode":"Markdown"}}]'
utilities.answer_inline_query(self, inline_query, results, 600, nil, nil, 'Hilfe anzeigen', 'hilfe_'..chosen_plugin)
utilities.answer_inline_query(inline_query, results, 600, nil, nil, 'Hilfe anzeigen', 'hilfe_'..chosen_plugin)
end
end
utilities.answer_inline_query(self, inline_query)
utilities.answer_inline_query(inline_query)
end
function help:action(msg, config, matches)
@@ -61,11 +61,11 @@ function help:action(msg, config, matches)
local help_text = help_text .. table.concat(commandlist, '\n'..config.cmd_pat) .. '\nParameter: <benötigt> [optional]'
local help_text = help_text:gsub('%[', '\\[')
local res = utilities.send_message(self, msg.from.id, help_text, true, nil, true)
local res = utilities.send_message(msg.from.id, help_text, true, nil, true)
if not res then
utilities.send_reply(self, msg, 'Bitte schreibe mir zuerst [privat](http://telegram.me/' .. self.info.username .. '?start=help) für eine Hilfe.', true)
utilities.send_reply(msg, 'Bitte schreibe mir zuerst [privat](http://telegram.me/' .. self.info.username .. '?start=help) für eine Hilfe.', true)
elseif msg.chat.type ~= 'private' then
utilities.send_reply(self, msg, 'Ich habe dir die Hilfe privat gesendet!.')
utilities.send_reply(msg, 'Ich habe dir die Hilfe privat gesendet!.')
end
return
end
@@ -74,12 +74,12 @@ function help:action(msg, config, matches)
local plugin = self.plugins[n]
if plugin.command and utilities.get_word(plugin.command, 1) == input and plugin.doc then
local output = '*Hilfe für* _' .. utilities.get_word(plugin.command, 1) .. '_ *:*' .. plugin.doc
utilities.send_message(self, msg.chat.id, output, true, nil, true)
utilities.send_message(msg.chat.id, output, true, nil, true)
return
end
end
utilities.send_reply(self, msg, 'Für diesen Befehl gibt es keine Hilfe.')
utilities.send_reply(msg, 'Für diesen Befehl gibt es keine Hilfe.')
end
return help

View File

@@ -15,8 +15,8 @@ function id:init(config)
id.doc = [[```Zeige dir deine ID und die IDs aller Gruppenmitglieder an.``]]
end
function id:get_member_count(self, msg, chat_id)
return bindings.request(self, 'getChatMembersCount', {
function id:get_member_count(msg, chat_id)
return bindings.request('getChatMembersCount', {
chat_id = chat_id
} )
end
@@ -51,7 +51,7 @@ function id:inline_callback(inline_query, config, matches)
local name = utilities.build_name(inline_query.from.first_name, inline_query.from.last_name)
local results = '[{"type":"article","id":"30","title":"Deine Telegram-ID ist:","description":"'..id..'","input_message_content":{"message_text":"<b>'..name..'</b>: <code>'..id..'</code>","parse_mode":"HTML"}}]'
utilities.answer_inline_query(self, inline_query, results, 10000, true)
utilities.answer_inline_query(inline_query, results, 10000, true)
end
function id:action(msg, config, matches)
@@ -83,10 +83,10 @@ function id:action(msg, config, matches)
local output = user .. ', und du bist in der Gruppe ' .. group
utilities.send_message(self, msg.chat.id, output, true, msg.message_id, true)
utilities.send_message(msg.chat.id, output, true, msg.message_id, true)
elseif matches[1] == "chat" then
if msg.chat.type ~= 'group' and msg.chat.type ~= 'supergroup' then
utilities.send_reply(self, msg, 'Das hier ist keine Gruppe!')
utilities.send_reply(msg, 'Das hier ist keine Gruppe!')
return
end
local chat_name = msg.chat.title
@@ -103,7 +103,7 @@ function id:action(msg, config, matches)
end
-- get all administrators and the creator
local administrators = utilities.get_chat_administrators(self, chat_id)
local administrators = utilities.get_chat_administrators(chat_id)
local admins = {}
for num in pairs(administrators.result) do
if administrators.result[num].status ~= 'creator' then
@@ -112,7 +112,7 @@ function id:action(msg, config, matches)
creator_id = administrators.result[num].user.id
end
end
local result = id:get_member_count(self, msg, chat_id)
local result = id:get_member_count(msg, chat_id)
local member_count = result.result
if member_count == 1 then
member_count = 'ist *1 Mitglied'
@@ -129,7 +129,7 @@ function id:action(msg, config, matches)
text = text..'*'..user.name..'* `['..user.id..']`\n'
end
end
utilities.send_reply(self, msg, text..'_(Bots sind nicht gelistet)_', true)
utilities.send_reply(msg, text..'_(Bots sind nicht gelistet)_', true)
end
end

View File

@@ -7,8 +7,8 @@ images.triggers = {
function images:action(msg, config, matches)
local url = matches[1]
local file, last_modified, nocache = get_cached_file(url, nil, msg.chat.id, 'upload_photo', self)
local result = utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
local file, last_modified, nocache = get_cached_file(url, nil, msg.chat.id, 'upload_photo')
local result = utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
if nocache then return end
if not result then return end

View File

@@ -26,9 +26,9 @@ function imdb:inline_callback(inline_query, config, matches)
local query = matches[1]
local url = BASE_URL..'/?s='..URL.escape(query)
local res, code = https.request(url)
if code ~= 200 then utilities.answer_inline_query(self, inline_query) return end
if code ~= 200 then abort_inline_query(inline_query) return end
local data = json.decode(res)
if data.Response ~= "True" then utilities.answer_inline_query(self, inline_query) return end
if data.Response ~= "True" then abort_inline_query(inline_query) return end
local results = '['
local id = 500
@@ -63,26 +63,26 @@ function imdb:inline_callback(inline_query, config, matches)
local results = results:sub(0, -2)
local results = results..']'
utilities.answer_inline_query(self, inline_query, results, 10000)
utilities.answer_inline_query(inline_query, results, 10000)
end
function imdb:action(msg, config)
local input = utilities.input_from_msg(msg)
if not input then
utilities.send_reply(self, msg, imdb.doc, true)
utilities.send_reply(msg, imdb.doc, true)
return
end
local url = BASE_URL..'/?t='..URL.escape(input)
local jstr, res = https.request(url)
if res ~= 200 then
utilities.send_reply(self, msg, config.errors.connection)
utilities.send_reply(msg, config.errors.connection)
return
end
local jdat = json.decode(jstr)
if jdat.Response ~= 'True' then
utilities.send_reply(self, msg, config.errors.results)
utilities.send_reply(msg, config.errors.results)
return
end
@@ -90,11 +90,11 @@ function imdb:action(msg, config)
output = output..string.gsub(jdat.imdbRating, '%.', ',')..'/10 | '..jdat.Runtime..' | '.. jdat.Genre..'\n'
output = output..'<i>' .. jdat.Plot .. '</i>'
utilities.send_reply(self, msg, output, 'HTML', '{"inline_keyboard":[[{"text":"IMDb-Seite aufrufen","url":"http://imdb.com/title/'.. jdat.imdbID..'"}]]}')
utilities.send_reply(msg, output, 'HTML', '{"inline_keyboard":[[{"text":"IMDb-Seite aufrufen","url":"http://imdb.com/title/'.. jdat.imdbID..'"}]]}')
if jdat.Poster ~= "N/A" then
local file = download_to_file(jdat.Poster)
utilities.send_photo(self, msg.chat.id, file)
utilities.send_photo(msg.chat.id, file)
end
end

View File

@@ -50,7 +50,7 @@ end
function imgblacklist:action(msg, config, matches)
if msg.from.id ~= config.admin then
utilities.send_reply(self, msg, config.errors.sudo)
utilities.send_reply(msg, config.errors.sudo)
return
end
@@ -60,22 +60,22 @@ function imgblacklist:action(msg, config, matches)
_blacklist = redis:smembers("telegram:img_blacklist")
if action == 'add' and not word then
utilities.send_reply(self, msg, imgblacklist.doc, true)
utilities.send_reply(msg, imgblacklist.doc, true)
return
elseif action == "add" and word then
utilities.send_reply(self, msg, imgblacklist:add_blacklist(word), true)
utilities.send_reply(msg, imgblacklist:add_blacklist(word), true)
return
end
if action == 'remove' and not word then
utilities.send_reply(self, msg, imgblacklist.doc, true)
utilities.send_reply(msg, imgblacklist.doc, true)
return
elseif action == "remove" and word then
utilities.send_reply(self, msg, imgblacklist:remove_blacklist(word), true)
utilities.send_reply(msg, imgblacklist:remove_blacklist(word), true)
return
end
utilities.send_reply(self, msg, imgblacklist:show_blacklist())
utilities.send_reply(msg, imgblacklist:show_blacklist())
end
return imgblacklist

View File

@@ -40,14 +40,14 @@ end
function imgur:action(msg)
local imgur_code = matches[1]
if imgur_code == "login" then return nil end
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local link = imgur:get_imgur_data(imgur_code)
if link then
local file = download_to_file(link)
if string.ends(link, ".gif") then
utilities.send_document(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_document(msg.chat.id, file, nil, msg.message_id)
else
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
end
end
end

View File

@@ -39,7 +39,7 @@ function insider:action(msg, config)
'<b>Insider:</b> MeeeeeeeM\n<b>Erschaffen/hauptsächlich verwendet von:</b> Brawl, nino\n<b>Wo eingesetzt?:</b> FiiiiiiiiiiiiiiiiiF\n<b>Bemerkung:</b> SooooooooooooooooS',
'<b>Insider:</b> DJ mP\n<b>Erschaffen/hauptsächlich verwendet von:</b> Brawl\n<b>Wo eingesetzt?:</b> Telegram\n<b>Bemerkung:</b> als Kurzname für masterP',
'<b>Insider:</b> Satya Nutella\n<b>Erschaffen/hauptsächlich verwendet von:</b> Brawl\n<b>Wo eingesetzt?:</b> Telegram\n<b>Bemerkung:</b> Anstelle von "Satya Nadella"'}
utilities.send_reply(self, msg, insiders[math.random(#insiders)], 'HTML')
utilities.send_reply(msg, insiders[math.random(#insiders)], 'HTML')
end
return insider

View File

@@ -73,14 +73,14 @@ end
function ip_info:action(msg, config, matches)
local host = matches[1]
local text, image_url = ip_info:get_host_data(host)
if not text then utilities.send_reply(self, msg, config.errors.connection) return end
if not text then utilities.send_reply(msg, config.errors.connection) return end
if image_url then
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(image_url, 'map.png')
utilities.send_photo(self, msg.chat.id, file, text, msg.message_id)
utilities.send_photo(msg.chat.id, file, text, msg.message_id)
else
utilities.send_reply(self, msg, text)
utilities.send_reply(msg, text)
end
end

View File

@@ -68,10 +68,10 @@ end
function isup:action(msg, config)
if isup:isup(matches[1]) then
utilities.send_reply(self, msg, matches[1]..' ist UP! ✅')
utilities.send_reply(msg, matches[1]..' ist UP! ✅')
return
else
utilities.send_reply(self, msg, matches[1]..' ist DOWN! ❌')
utilities.send_reply(msg, matches[1]..' ist DOWN! ❌')
return
end
end

View File

@@ -18,9 +18,9 @@ function jk:action(msg, config)
"/justkitten6.jpg"
}
local random_pic = math.random(#jk_pics)
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(JK_URL..jk_pics[random_pic])
utilities.send_photo(self, msg.chat.id, file)
utilities.send_photo(msg.chat.id, file)
end
return jk

View File

@@ -38,19 +38,19 @@ function kickstarter_search:action(msg, config, matches)
local query = matches[1]
local text, image_url = kickstarter_search:search_it(query, slug)
if not text then
utilities.send_reply(self, msg, config.errors.connection)
utilities.send_reply(msg, config.errors.connection)
return
elseif text == 'NOTFOUND' then
utilities.send_reply(self, msg, config.errors.results)
utilities.send_reply(msg, config.errors.results)
return
end
if image_url then
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(image_url, query..'.png')
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
end
utilities.send_reply(self, msg, text, 'HTML')
utilities.send_reply(msg, text, 'HTML')
end
return kickstarter_search

View File

@@ -23,19 +23,19 @@ end
function konachan:action(msg, config)
local input = utilities.input_from_msg(msg)
if not input then
utilities.send_reply(self, msg, konachan.doc, true)
utilities.send_reply(msg, konachan.doc, true)
return
end
local tag = string.gsub(input, " ", '+' )
local url = konachan:get_kc(tag)
if not url then
utilities.send_reply(self, msg, config.errors.results)
utilities.send_reply(msg, config.errors.results)
return
end
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(url)
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_reply(self, msg, url)
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
utilities.send_reply(msg, url)
end
return konachan

View File

@@ -23,19 +23,19 @@ end
function konachan_nsfw:action(msg, config)
local input = utilities.input_from_msg(msg)
if not input then
utilities.send_reply(self, msg, konachan_nsfw.doc, true)
utilities.send_reply(msg, konachan_nsfw.doc, true)
return
end
local tag = string.gsub(input, " ", '+' )
local url = konachan_nsfw:get_kc(tag)
if not url then
utilities.send_reply(self, msg, config.errors.results)
utilities.send_reply(msg, config.errors.results)
return
end
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(url)
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_reply(self, msg, url)
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
utilities.send_reply(msg, url)
end
return konachan_nsfw

View File

@@ -44,20 +44,20 @@ function loc_manager:action(msg, config, matches)
local user_id = msg.from.id
if matches[1] == 'set' then
utilities.send_reply(self, msg, loc_manager:set_location(user_id, matches[2]), true)
utilities.send_reply(msg, loc_manager:set_location(user_id, matches[2]), true)
return
elseif matches[1] == 'del' then
utilities.send_reply(self, msg, loc_manager:del_location(user_id), true)
utilities.send_reply(msg, loc_manager:del_location(user_id), true)
return
else
local set_location = get_location(user_id)
if not set_location then
utilities.send_reply(self, msg, '*Du hast keinen Ort gesetzt!*', true)
utilities.send_reply(msg, '*Du hast keinen Ort gesetzt!*', true)
return
else
local coords = utilities.get_coords(set_location, config)
utilities.send_location(self, msg.chat.id, coords.lat, coords.lon, msg.message_id)
utilities.send_reply(self, msg, 'Gesetzter Wohnort: *'..set_location..'*', true)
utilities.send_location(msg.chat.id, coords.lat, coords.lon, msg.message_id)
utilities.send_reply(msg, 'Gesetzter Wohnort: *'..set_location..'*', true)
return
end
end

View File

@@ -36,12 +36,12 @@ function lyrics:action(msg, config, matches)
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, lyrics.doc, true, msg.message_id, true)
utilities.send_message(msg.chat.id, lyrics.doc, true, msg.message_id, true)
return
end
end
utilities.send_reply(self, msg, lyrics:getLyrics(input), true)
utilities.send_reply(msg, lyrics:getLyrics(input), true)
end
return lyrics

View File

@@ -15,7 +15,7 @@ function muschel:frag_die_muschel()
end
function muschel:action(msg, config, matches)
utilities.send_reply(self, msg, muschel:frag_die_muschel())
utilities.send_reply(msg, muschel:frag_die_muschel())
end
return muschel

View File

@@ -35,10 +35,10 @@ function mal_user:action(msg, config, matches)
local user = matches[1]
local text = mal_user:get_infos(user)
if not text then
utilities.send_reply(self, msg, config.errors.results)
utilities.send_reply(msg, config.errors.results)
return
end
utilities.send_reply(self, msg, text, 'HTML')
utilities.send_reply(msg, text, 'HTML')
end
return mal_user

View File

@@ -13,7 +13,7 @@ function me:action(msg, config)
return
end
utilities.send_message(self, msg.chat.id, msg.from.first_name..' '..input)
utilities.send_message(msg.chat.id, msg.from.first_name..' '..input)
end
return me

View File

@@ -35,19 +35,19 @@ function media:action(msg, config, matches)
chat_action = 'upload_document'
end
local file, last_modified, nocache = get_cached_file(url, nil, msg.chat.id, chat_action, self)
local file, last_modified, nocache = get_cached_file(url, nil, msg.chat.id, chat_action)
if not file then return end
if ext == 'gif' then
result = utilities.send_document(self, receiver, file, nil, msg.message_id)
result = utilities.send_document(receiver, file, nil, msg.message_id)
elseif ext == 'ogg' then
result = utilities.send_voice(self, receiver, file, nil, msg.message_id)
result = utilities.send_voice(receiver, file, nil, msg.message_id)
elseif mime_type == 'audio' then
result = utilities.send_audio(self, receiver, file, nil, msg.message_id)
result = utilities.send_audio(receiver, file, nil, msg.message_id)
elseif mime_type == 'video' then
result = utilities.send_video(self, receiver, file, nil, msg.message_id)
result = utilities.send_video(receiver, file, nil, msg.message_id)
else
result = utilities.send_document(self, receiver, file, nil, msg.message_id)
result = utilities.send_document(receiver, file, nil, msg.message_id)
end
if nocache then return end

View File

@@ -74,7 +74,7 @@ function mc_server:parseText(text, mc_server)
end
function mc_server:action(msg, config, matches)
utilities.send_reply(self, msg, mc_server:parseText(msg.text, mc_server), true)
utilities.send_reply(msg, mc_server:parseText(msg.text, mc_server), true)
end
return mc_server

View File

@@ -16,14 +16,14 @@ function mc_skin:action(msg, config, matches)
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, mc_skin.doc, true, msg.message_id, true)
utilities.send_message(msg.chat.id, mc_skin.doc, true, msg.message_id, true)
return
end
end
local url = 'http://www.minecraft-skin-viewer.net/3d.php?layers=true&aa=true&a=0&w=330&wt=10&abg=330&abd=40&ajg=340&ajd=20&ratio=13&format=png&login='..input..'&headOnly=false&displayHairs=true&randomness=341.png'
local file = download_to_file(url, input..'.png')
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
end
return mc_skin

View File

@@ -28,14 +28,14 @@ function moe:action(msg, config, matches)
site_url = 'http://yagyuu.moe'
end
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local photo_url = moe:get_url(site_url)
if not photo_url then
utilities.send_reply(self, msg, config.errors.connection)
utilities.send_reply(msg, config.errors.connection)
return
end
local file = download_to_file(photo_url)
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
end
return moe

View File

@@ -205,31 +205,31 @@ function mal:action(msg, config, matches)
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!')
utilities.send_reply(msg, 'Anime nicht gefunden!')
return
else
local text, image_url = mal:send_anime_data(anime_info)
if image_url then
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(image_url)
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
end
utilities.send_reply(self, msg, text, true)
utilities.send_reply(msg, text, true)
return
end
elseif matches[1] == 'manga' then
local manga_info = mal:get_mal_info(query, 'manga')
if manga_info == "HTTP-Fehler" then
utilities.send_reply(self, msg, 'Manga nicht gefunden!')
utilities.send_reply(msg, 'Manga nicht gefunden!')
return
else
local text, image_url = mal:send_manga_data(manga_info)
if image_url then
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(image_url)
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
end
utilities.send_reply(self, msg, text, true)
utilities.send_reply(msg, text, true)
return
end
end

View File

@@ -48,10 +48,10 @@ function mfc:action(msg, config, matches)
local user = matches[1]
local text = mfc:get_infos(user)
if not text then
utilities.send_reply(self, msg, config.errors.results)
utilities.send_reply(msg, config.errors.results)
return
end
utilities.send_reply(self, msg, text, 'HTML')
utilities.send_reply(msg, text, 'HTML')
end
return mfc

View File

@@ -47,13 +47,13 @@ function nicovideo:action(msg, config, matches)
local id = matches[1]
local text, pic_url = nicovideo:get_video(id)
if not text then
utilities.send_reply(self, msg, config.errors.results)
utilities.send_reply(msg, config.errors.results)
return
end
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(pic_url, 'nicovideo_thumb.png')
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_reply(self, msg, text, 'HTML')
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
utilities.send_reply(msg, text, 'HTML')
end
return nicovideo

View File

@@ -23,7 +23,7 @@ function isWordFoundInString(word,input)
select(2,input:gsub('%W+' .. word .. '%W+','')) > 0
end
function notify:pre_process(msg, self)
function notify:pre_process(msg)
local notify_users = redis:smembers('notify:ls')
-- I call this beautiful lady the "if soup"
@@ -44,7 +44,7 @@ function notify:pre_process(msg, self)
local from = string.gsub(msg.from.name, "%_", " ")
local chat_name = string.gsub(msg.chat.title, "%_", " ")
local text = from..' am '..send_date..' in "'..chat_name..'":\n\n'..msg.text
utilities.send_message(self, id, text, true)
utilities.send_message(id, text, true)
end
end
end
@@ -57,7 +57,7 @@ end
function notify:action(msg, config, matches)
if not msg.from.username then
utilities.send_reply(self, msg, 'Du hast keinen Usernamen und kannst daher dieses Feature nicht nutzen. Tut mir leid!' )
utilities.send_reply(msg, 'Du hast keinen Usernamen und kannst daher dieses Feature nicht nutzen. Tut mir leid!' )
return
end
@@ -67,18 +67,18 @@ function notify:action(msg, config, matches)
if matches[1] == "del" then
if not redis:sismember('notify:ls', username) then
utilities.send_reply(self, msg, 'Du wirst noch gar nicht benachrichtigt!')
utilities.send_reply(msg, 'Du wirst noch gar nicht benachrichtigt!')
return
end
print('Setze notify redis hash '..hash..' auf false')
redis:hset(hash, 'notify', false)
print('Lösche '..username..' von redis set notify:ls')
redis:srem('notify:ls', username)
utilities.send_reply(self, msg, 'Du erhälst jetzt keine Benachrichtigungen mehr, wenn du angesprochen wirst.')
utilities.send_reply(msg, 'Du erhälst jetzt keine Benachrichtigungen mehr, wenn du angesprochen wirst.')
return
else
if redis:sismember('notify:ls', username) then
utilities.send_reply(self, msg, 'Du wirst schon benachrichtigt!')
utilities.send_reply(msg, 'Du wirst schon benachrichtigt!')
return
end
print('Setze notify in redis hash '..hash..' auf true')
@@ -87,11 +87,11 @@ function notify:action(msg, config, matches)
redis:hset(hash, 'id', msg.from.id)
print('Adde '..username..' zu redis set notify:ls')
redis:sadd('notify:ls', username)
local res = utilities.send_message(self, msg.from.id, 'Du erhälst jetzt Benachrichtigungen, wenn du angesprochen wirst, nutze `/notify del` zum Deaktivieren.', true, nil, true)
local res = utilities.send_message(msg.from.id, 'Du erhälst jetzt Benachrichtigungen, wenn du angesprochen wirst, nutze `/notify del` zum Deaktivieren.', true, nil, true)
if not res then
utilities.send_reply(self, msg, 'Bitte schreibe mir [privat](http://telegram.me/' .. self.info.username .. '?start=notify), um den Vorgang abzuschließen.', true)
utilities.send_reply(msg, 'Bitte schreibe mir [privat](http://telegram.me/' .. self.info.username .. '?start=notify), um den Vorgang abzuschließen.', true)
elseif msg.chat.type ~= 'private' then
utilities.send_reply(self, msg, 'Du erhälst jetzt Benachrichtigungen, wenn du angesprochen wirst, nutze `/notify del` zum Deaktivieren.', true)
utilities.send_reply(msg, 'Du erhälst jetzt Benachrichtigungen, wenn du angesprochen wirst, nutze `/notify del` zum Deaktivieren.', true)
end
end
end

View File

@@ -26,10 +26,10 @@ function openingsmoe:action(msg, config, matches)
local opening = matches[1]
local text = openingsmoe:get_opening(opening)
if not text then
utilities.send_reply(self, msg, config.errors.connection)
utilities.send_reply(msg, config.errors.connection)
return
end
utilities.send_reply(self, msg, text, 'HTML')
utilities.send_reply(msg, text, 'HTML')
end
return openingsmoe

View File

@@ -26,10 +26,10 @@ function pagespeed_insights:get_pagespeed(test_url)
end
function pagespeed_insights:action(msg, config, matches)
utilities.send_typing(self, msg.chat.id, 'typing')
utilities.send_typing(msg.chat.id, 'typing')
local text = pagespeed_insights:get_pagespeed(matches[1])
if not text then utilities.send_reply(self, msg, config.errors.connection) return end
utilities.send_reply(self, msg, text, true)
if not text then utilities.send_reply(msg, config.errors.connection) return end
utilities.send_reply(msg, text, true)
end
return pagespeed_insights

View File

@@ -33,10 +33,10 @@ function pasteee:action(msg, config, matches)
local text = matches[1]
local link, iserror = upload(text)
if iserror then
utilities.send_reply(self, msg, link)
utilities.send_reply(msg, link)
return
end
utilities.send_reply(self, msg, '[Text auf Paste.ee ansehen]('..link..')', true)
utilities.send_reply(msg, '[Text auf Paste.ee ansehen]('..link..')', true)
end
return pasteee

View File

@@ -23,11 +23,11 @@ function patterns:action(msg)
end
)
if res == false then
utilities.send_reply(self, msg, 'Falsches Pattern!')
utilities.send_reply(msg, 'Falsches Pattern!')
else
output = output:sub(1, 4000)
output = '*Du meintest wohl*:\n"'..utilities.md_escape(utilities.trim(output))..'"'
utilities.send_reply(self, msg.reply_to_message, output, true)
utilities.send_reply(msg.reply_to_message, output, true)
end
end

View File

@@ -101,13 +101,13 @@ function pixabay:action(msg, config, matches)
end
if url == 'NOPIX' then
utilities.send_reply(self, msg, config.errors.results)
utilities.send_reply(msg, config.errors.results)
return
else
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local file = download_to_file(url)
local text = '"'..tags..'" von '..user
utilities.send_photo(self, msg.chat.id, file, 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, file, text, msg.message_id, '{"inline_keyboard":[[{"text":"Seite aufrufen","url":"'..page_url..'"},{"text":"Volles Bild (Login notwendig)","url":"'..full_url..'"}]]}')
return
end
end

View File

@@ -50,7 +50,7 @@ function play_store:action(msg, config, matches)
if data == nil then
return
else
utilities.send_reply(self, msg, play_store:send_playstore_data(data), true)
utilities.send_reply(msg, play_store:send_playstore_data(data), true)
return
end
end

View File

@@ -157,26 +157,26 @@ end
function plex:action(msg, config)
local input = utilities.input_from_msg(msg)
if not input then
utilities.send_reply(self, msg. plex.doc, true)
utilities.send_reply(msg. plex.doc, true)
return
end
local query = string.gsub(URL.escape(input), '&', '+')
local text, pic = plex:get_plex(query)
if not text then
utilities.send_reply(self, msg, config.errors.results)
utilities.send_reply(msg, config.errors.results)
return
elseif text == 'NOTOK' then
utilities.send_reply(self, msg, config.errors.connection)
utilities.send_reply(msg, config.errors.connection)
return
end
if pic then
utilities.send_typing(self, receiver, 'upload_photo')
utilities.send_typing(receiver, 'upload_photo')
local file = download_to_file(pic, 'plex.png')
utilities.send_photo(self, msg.chat.id, file)
utilities.send_photo(msg.chat.id, file)
end
utilities.send_reply(self, msg, text, 'HTML')
utilities.send_reply(msg, text, 'HTML')
end
return plex

View File

@@ -162,13 +162,13 @@ end
function plugin_manager:action(msg, config, matches)
if msg.from.id ~= config.admin then
utilities.send_reply(self, msg, config.errors.sudo)
utilities.send_reply(msg, config.errors.sudo)
return
end
-- Show the available plugins
if matches[1] == '/plugins' then
utilities.send_reply(self, msg, plugin_manager:list_plugins())
utilities.send_reply(msg, plugin_manager:list_plugins())
return
end
@@ -178,11 +178,11 @@ function plugin_manager:action(msg, config, matches)
if matches[4] then
local id = matches[4]
print("enable "..plugin..' on chat#id'..id)
utilities.send_reply(self, msg, plugin_manager:reenable_plugin_on_chat(id, plugin))
utilities.send_reply(msg, plugin_manager:reenable_plugin_on_chat(id, plugin))
return
else
print("enable "..plugin..' on this chat')
utilities.send_reply(self, msg, plugin_manager:reenable_plugin_on_chat(msg, plugin))
utilities.send_reply(msg, plugin_manager:reenable_plugin_on_chat(msg, plugin))
return
end
end
@@ -191,7 +191,7 @@ function plugin_manager:action(msg, config, matches)
if matches[1] == 'enable' then
local plugin_name = matches[2]
print("enable: "..matches[2])
utilities.send_reply(self, msg, plugin_manager:enable_plugin(self, config, plugin_name))
utilities.send_reply(msg, plugin_manager:enable_plugin(self, config, plugin_name))
return
end
@@ -201,11 +201,11 @@ function plugin_manager:action(msg, config, matches)
if matches[4] then
local id = matches[4]
print("disable "..plugin..' on chat#id'..id)
utilities.send_reply(self, msg, plugin_manager:disable_plugin_on_chat(id, plugin))
utilities.send_reply(msg, plugin_manager:disable_plugin_on_chat(id, plugin))
return
else
print("disable "..plugin..' on this chat')
utilities.send_reply(self, msg, plugin_manager:disable_plugin_on_chat(msg, plugin))
utilities.send_reply(msg, plugin_manager:disable_plugin_on_chat(msg, plugin))
return
end
end
@@ -213,13 +213,13 @@ function plugin_manager:action(msg, config, matches)
-- Disable a plugin
if matches[1] == 'disable' then
print("disable: "..matches[2])
utilities.send_reply(self, msg, plugin_manager:disable_plugin(self, config, matches[2]))
utilities.send_reply(msg, plugin_manager:disable_plugin(self, config, matches[2]))
return
end
-- Reload all the plugins!
if matches[1] == 'reload' then
utilities.send_reply(self, msg, plugin_manager:reload_plugins(self, config))
utilities.send_reply(msg, plugin_manager:reload_plugins(self, config))
return
end
end

View File

@@ -102,40 +102,40 @@ function pocket:action(msg, config, matches)
if matches[1] == 'set' then
local access_token = matches[2]
utilities.send_reply(self, msg, pocket:set_pocket_access_token(hash, access_token), true)
utilities.send_reply(msg, pocket:set_pocket_access_token(hash, access_token), true)
local message_id = redis:hget(hash, 'pocket_login_msg')
utilities.edit_message(self, msg.chat.id, message_id, '*Anmeldung abgeschlossen!*', true, true)
utilities.edit_message(msg.chat.id, message_id, '*Anmeldung abgeschlossen!*', true, true)
redis:hdel(hash, 'pocket_login_msg')
return
end
if not access_token then
local result = utilities.send_reply(self, msg, '*Bitte authentifiziere dich zuerst, indem du dich anmeldest.*', true, '{"inline_keyboard":[[{"text":"Bei Pocket anmelden","url":"https://brawlbot.tk/apis/callback/pocket/connect.php"}]]}')
local result = utilities.send_reply(msg, '*Bitte authentifiziere dich zuerst, indem du dich anmeldest.*', true, '{"inline_keyboard":[[{"text":"Bei Pocket anmelden","url":"https://brawlbot.tk/apis/callback/pocket/connect.php"}]]}')
redis:hset(hash, 'pocket_login_msg', result.result.message_id)
return
end
if matches[1] == 'unauth' then
redis:hdel(hash, 'pocket')
utilities.send_reply(self, msg, 'Erfolgreich ausgeloggt! Du kannst den Zugriff [in deinen Einstellungen](https://getpocket.com/connected_applications) endgültig entziehen.', true)
utilities.send_reply(msg, 'Erfolgreich ausgeloggt! Du kannst den Zugriff [in deinen Einstellungen](https://getpocket.com/connected_applications) endgültig entziehen.', true)
return
end
if matches[1] == 'add' then
utilities.send_reply(self, msg, pocket:add_pocket_item(access_token, matches[2]))
utilities.send_reply(msg, pocket:add_pocket_item(access_token, matches[2]))
return
end
if matches[1] == 'archive' or matches[1] == 'delete' or matches[1] == 'readd' or matches[1] == 'favorite' or matches[1] == 'unfavorite' then
utilities.send_reply(self, msg, pocket:modify_pocket_item(access_token, matches[1], matches[2]))
utilities.send_reply(msg, pocket:modify_pocket_item(access_token, matches[1], matches[2]))
return
end
if msg.chat.type == 'chat' or msg.chat.type == 'supergroup' then
utilities.send_reply(self, msg, 'Ausgeben deiner privaten Pocket-Liste in einem öffentlichen Chat wird feige verweigert. Bitte schreibe mich privat an!', true)
utilities.send_reply(msg, 'Ausgeben deiner privaten Pocket-Liste in einem öffentlichen Chat wird feige verweigert. Bitte schreibe mich privat an!', true)
return
else
utilities.send_reply(self, msg, pocket:list_pocket_items(access_token))
utilities.send_reply(msg, pocket:list_pocket_items(access_token))
return
end
end

View File

@@ -13,14 +13,14 @@ end
function pokedex:action(msg, config)
bindings.sendChatAction(self, { chat_id = msg.chat.id, action = 'typing' } )
bindings.sendChatAction({ chat_id = msg.chat.id, action = 'typing' } )
local input = utilities.input(msg.text_lower)
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, pokedex.doc, true, msg.message_id, true)
utilities.send_message(msg.chat.id, pokedex.doc, true, msg.message_id, true)
return
end
end
@@ -30,7 +30,7 @@ function pokedex:action(msg, config)
local dex_url = url .. '/api/v1/pokemon/' .. input
local dex_jstr, res = http.request(dex_url)
if res ~= 200 then
utilities.send_reply(self, msg, config.errors.connection)
utilities.send_reply(msg, config.errors.connection)
return
end
@@ -39,7 +39,7 @@ function pokedex:action(msg, config)
local desc_url = url .. dex_jdat.descriptions[math.random(#dex_jdat.descriptions)].resource_uri
local desc_jstr, _ = http.request(desc_url)
if res ~= 200 then
utilities.send_reply(self, msg, config.errors.connection)
utilities.send_reply(msg, config.errors.connection)
return
end
@@ -59,7 +59,7 @@ function pokedex:action(msg, config)
local output = '*' .. dex_jdat.name .. '*\n#' .. dex_jdat.national_id .. ' | ' .. poke_type .. '\n_' .. desc_jdat.description:gsub('POKMON', 'Pokémon'):gsub('Pokmon', 'Pokémon') .. '_'
utilities.send_message(self, msg.chat.id, output, true, nil, true)
utilities.send_message(msg.chat.id, output, true, nil, true)
end

View File

@@ -9,14 +9,14 @@ end
porndoge.command = 'pdoge'
function porndoge:action(msg, config)
utilities.send_typing(self, msg.chat.id, 'upload_photo')
utilities.send_typing(msg.chat.id, 'upload_photo')
local url = 'https://porndoge.herokuapp.com/'
local file = download_to_file(url, 'porndoge.png')
if not file then
utilities.send_reply(self, msg, config.errors.connection)
utilities.send_reply(msg, config.errors.connection)
return
end
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
end
return porndoge

View File

@@ -14,10 +14,10 @@ pornhub.command = 'ge <ID>'
function pornhub:action(msg, config, matches)
local url = 'http://img.pornhub.com/gif/'..matches[1]..'.gif'
utilities.send_typing(self, msg.chat.id, 'upload_document')
utilities.send_typing(msg.chat.id, 'upload_document')
local file = download_to_file(url)
if not file then
utilities.send_reply(self, msg, config.errors.results)
utilities.send_reply(msg, config.errors.results)
return
end
@@ -26,7 +26,7 @@ function pornhub:action(msg, config, matches)
else
source = nil
end
utilities.send_document(self, msg.chat.id, file, source, msg.message_id)
utilities.send_document(msg.chat.id, file, source, msg.message_id)
end
return pornhub

Some files were not shown because too many files have changed in this diff Show More