Upstream:
- self muss nicht mehr überall übergeben werden - alle Plugins wurden angepasst Eigene Updates: - abort_inline_query() hinzugefügt - Mehr Plugins zum Standard-Set hinzugefügt - Eventuell noch etwas, was ich vergessen hab
This commit is contained in:
commit
fb9d3652f3
15
README.md
15
README.md
@ -106,7 +106,8 @@ Einige Funktionen, die oft benötigt werden, sind in `utilites.lua` verfügbar.
|
||||
|
||||
## Bindings
|
||||
**Diese Sektion wurde noch nicht lokalisiert.**
|
||||
Calls to the Telegram bot API are performed with the `bindings.lua` file through the multipart-post library. otouto's bindings file supports all standard API methods and all arguments. Its main function, `bindings.request`, accepts four arguments: `self`, `method`, `parameters`, `file`. (At the very least, `self` should be a table containing `BASE_URL`, which is bot's API endpoint, ending with a slash, eg `https://api.telegram.org/bot123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ987654321/`.)
|
||||
|
||||
Calls to the Telegram bot API are performed with the `bindings.lua` file through the multipart-post library. otouto's bindings file supports all standard API methods and all arguments. Its main function, `bindings.request`, accepts three arguments: `method`, `parameters`, `file`. Before using it, initialize the bindings module with its `init` function, passing your bot token as the argument.
|
||||
|
||||
`method` is the name of the API method. `parameters` (optional) is a table of key/value pairs of the method's parameters to be sent with the method. `file` (super-optional) is a table of a single key/value pair, where the key is the name of the parameter and the value is the filename (if these are included in `parameters` instead, otouto will attempt to send the filename as a file ID).
|
||||
|
||||
@ -114,7 +115,6 @@ Additionally, any method can be called as a key in the `bindings` table (for exa
|
||||
|
||||
```
|
||||
bindings.request(
|
||||
self,
|
||||
'sendMessage',
|
||||
{
|
||||
chat_id = 987654321,
|
||||
@ -125,34 +125,31 @@ bindings.request(
|
||||
}
|
||||
)
|
||||
|
||||
bindings.sendMessage(
|
||||
self,
|
||||
{
|
||||
bindings.sendMessage{
|
||||
chat_id = 987654321,
|
||||
text = 'Quick brown fox.',
|
||||
reply_to_message_id = 54321,
|
||||
disable_web_page_preview = false,
|
||||
parse_method = 'Markdown'
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
Furthermore, `utilities.lua` provides two "shortcut" functions to mimic the behavior of otouto's old bindings: `send_message` and `send_reply`. `send_message` accepts these arguments: `self`, `chat_id`, `text`, `disable_web_page_preview`, `reply_to_message_id`, `use_markdown`. The following function call is equivalent to the two above:
|
||||
|
||||
```
|
||||
utilities.send_message(self, 987654321, 'Quick brown fox.', false, 54321, true)
|
||||
utilities.send_message(987654321, 'Quick brown fox.', false, 54321, true)
|
||||
```
|
||||
|
||||
Uploading a file for the `sendPhoto` method would look like this:
|
||||
|
||||
```
|
||||
bindings.sendPhoto(self, { chat_id = 987654321 }, { photo = 'rarepepe.jpg' } )
|
||||
bindings.sendPhoto({ chat_id = 987654321 }, { photo = 'dankmeme.jpg' } )
|
||||
```
|
||||
|
||||
and using `sendPhoto` with a file ID would look like this:
|
||||
|
||||
```
|
||||
bindings.sendPhoto(self, { chat_id = 987654321, photo = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789' } )
|
||||
bindings.sendPhoto{ chat_id = 987654321, photo = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789' }
|
||||
```
|
||||
|
||||
Upon success, bindings will return the deserialized result from the API. Upon failure, it will return false and the result. In the case of a connection error, it will return two false values. If an invalid method name is given, bindings will throw an exception. This is to mimic the behavior of more conventional bindings as well as to prevent "silent errors".
|
||||
|
@ -1,10 +1,23 @@
|
||||
--[[
|
||||
bindings.lua (rev. 2016/05/28)
|
||||
bindings.lua (rev. 2016/08/20)
|
||||
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.
|
||||
|
||||
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 = {}
|
||||
@ -15,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
|
||||
@ -22,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)
|
||||
@ -49,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,
|
||||
@ -76,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 })
|
||||
|
@ -1,23 +1,36 @@
|
||||
--[[
|
||||
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('otouto.bindings')
|
||||
utilities = require('otouto.utilities')
|
||||
|
||||
bot.version = '2.2.6.3'
|
||||
bot.version = '2.2.7'
|
||||
|
||||
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('Fetching bot information...')
|
||||
self.info = bindings.getMe(self)
|
||||
self.info = bindings.getMe()
|
||||
until self.info
|
||||
self.info = self.info.result
|
||||
|
||||
@ -87,7 +100,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 +112,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 +132,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 +169,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 +188,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 +196,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
|
||||
@ -208,9 +221,9 @@ function bot:run(config)
|
||||
for n=1, #self.plugins do
|
||||
local v = self.plugins[n]
|
||||
if v.cron then -- Call each plugin's cron function, if it has one.
|
||||
local result, err = pcall(function() v.cron(self, config) end)
|
||||
local result, err = pcall(function() v.cron(config) end)
|
||||
if not result then
|
||||
utilities.handle_exception(self, err, 'CRON: ' .. n, config)
|
||||
utilities.handle_exception(err, 'CRON: ' .. n, config.log_chat)
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -232,7 +245,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 +288,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,12 +324,17 @@ function create_plugin_set()
|
||||
'control',
|
||||
'about',
|
||||
'id',
|
||||
'post_photo',
|
||||
'images',
|
||||
'media',
|
||||
'service_migrate_to_supergroup',
|
||||
'creds',
|
||||
'echo',
|
||||
'currency',
|
||||
'banhammer',
|
||||
'channels',
|
||||
'plugins',
|
||||
'settings',
|
||||
'help'
|
||||
}
|
||||
print ('enabling a few plugins - saving to redis set telegram:enabled_plugins')
|
||||
|
@ -28,7 +28,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 = '['
|
||||
@ -42,19 +42,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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
@ -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
|
||||
|
@ -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()
|
||||
|
@ -40,11 +40,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
|
||||
} )
|
||||
@ -57,7 +57,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
|
||||
@ -65,15 +65,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
|
||||
} )
|
||||
@ -99,7 +99,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
|
||||
@ -107,7 +107,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
|
||||
@ -120,7 +120,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
|
||||
@ -156,7 +156,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!')
|
||||
@ -182,7 +182,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
|
||||
@ -207,17 +207,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
|
||||
@ -235,10 +235,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
|
||||
@ -247,14 +247,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
|
||||
|
||||
@ -269,7 +269,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
|
||||
|
||||
@ -286,14 +286,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
|
||||
|
||||
@ -301,10 +301,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
|
||||
@ -312,7 +312,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
|
||||
|
||||
@ -320,10 +320,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
|
||||
@ -334,14 +334,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
|
||||
|
||||
@ -358,7 +358,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
|
||||
|
||||
@ -375,7 +375,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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
@ -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
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -22,7 +22,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
|
||||
@ -39,17 +39,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
|
||||
@ -61,7 +61,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
|
||||
|
@ -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
|
||||
|
@ -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, "Ü", "Ü")
|
||||
local answer = string.gsub(answer, "ü", "ü")
|
||||
local answer = string.gsub(answer, "ß", "ß")
|
||||
utilities.send_reply(self, msg, answer)
|
||||
utilities.send_reply(msg, answer)
|
||||
end
|
||||
|
||||
return cleverbot
|
@ -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
|
||||
|
@ -31,22 +31,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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -14,17 +14,17 @@ 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')
|
||||
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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -26,7 +26,7 @@ function fefe:post(id)
|
||||
end
|
||||
|
||||
function fefe:action(msg, config, matches)
|
||||
utilities.send_reply(self, msg, fefe:post(matches[1]))
|
||||
utilities.send_reply(msg, fefe:post(matches[1]))
|
||||
end
|
||||
|
||||
return fefe
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
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
|
||||
|
@ -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
|
||||
|
@ -26,8 +26,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)))
|
||||
|
||||
@ -35,10 +35,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)
|
||||
@ -86,18 +86,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
|
||||
@ -144,18 +144,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 ('Checking if search contains blacklisted word: '..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))
|
||||
@ -164,10 +164,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)
|
||||
@ -215,18 +215,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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -52,7 +52,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
|
||||
|
||||
@ -117,10 +117,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, 'fanrt') or 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
|
||||
@ -133,14 +133,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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
@ -57,7 +57,7 @@ function media_download:pre_process(msg, self, config)
|
||||
|
||||
if file_size > 19922944 then
|
||||
print('File is over 20 MB - can\'t download :(')
|
||||
return
|
||||
return msg
|
||||
end
|
||||
|
||||
local save_dir = config.getfile_path
|
||||
@ -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
|
||||
} )
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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()
|
||||
|
@ -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
|
@ -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
|
||||
|
@ -49,15 +49,15 @@ end
|
||||
function golem:action(msg, config, matches)
|
||||
local article_identifier = matches[2]
|
||||
local data, image_data = golem:get_golem_data(article_identifier)
|
||||
if not data and not image_data then utilities.send_reply(self, msg, config.errors.connection) return end
|
||||
if not data and not image_data then utilities.send_reply(msg, config.errors.connection) return end
|
||||
local text, image_url = golem:send_golem_data(data, image_data)
|
||||
|
||||
if image_url then
|
||||
utilities.send_typing(self, msg.chat.id, 'upload_photo')
|
||||
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)
|
||||
end
|
||||
|
||||
return golem
|
@ -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
|
||||
|
@ -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¢er=" .. 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
|
||||
|
@ -34,7 +34,7 @@ end
|
||||
|
||||
function hackernews:action(msg, config, matches)
|
||||
local hn_code = matches[1]
|
||||
utilities.send_reply(self, msg, hackernews:send_hackernews_post(hn_code), true)
|
||||
utilities.send_reply(msg, hackernews:send_hackernews_post(hn_code), true)
|
||||
end
|
||||
|
||||
return hackernews
|
||||
|
@ -32,11 +32,11 @@ function heise:action(msg, config, matches)
|
||||
local article = URL.escape(matches[1])
|
||||
local text, image_url = heise:get_heise_article(article)
|
||||
if image_url then
|
||||
utilities.send_typing(self, msg.chat.id, 'upload_photo')
|
||||
utilities.send_typing(msg.chat.id, 'upload_photo')
|
||||
local file = download_to_file(image_url, 'heise_teaser.jpg')
|
||||
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
|
||||
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 heise
|
@ -5,7 +5,7 @@ hello.triggers = {
|
||||
}
|
||||
|
||||
function hello:action(msg, config, matches)
|
||||
utilities.send_message(self, msg.chat.id, 'Hallo, '..matches[1]..'!')
|
||||
utilities.send_message(msg.chat.id, 'Hallo, '..matches[1]..'!')
|
||||
end
|
||||
|
||||
return hello
|
||||
|
@ -29,10 +29,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)
|
||||
@ -62,11 +62,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
|
||||
@ -75,12 +75,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
|
@ -18,8 +18,8 @@ Alias: ]]..config.cmd_pat..[[who
|
||||
```]]
|
||||
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
|
||||
@ -54,7 +54,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)
|
||||
@ -86,10 +86,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
|
||||
@ -106,7 +106,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
|
||||
@ -115,7 +115,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'
|
||||
@ -132,7 +132,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
|
||||
|
||||
|
@ -53,22 +53,22 @@ function ifttt:action(msg, config, matches)
|
||||
local value3 = matches[4]
|
||||
|
||||
if event == '!set' then
|
||||
utilities.send_reply(self, msg, ifttt:set_ifttt_key(hash, value1), true)
|
||||
utilities.send_reply(msg, ifttt:set_ifttt_key(hash, value1), true)
|
||||
return
|
||||
end
|
||||
|
||||
if not key then
|
||||
utilities.send_reply(self, msg, '*Bitte speichere zuerst deinen Schlüssel ein!* Aktiviere dazu den [Maker Channel](https://ifttt.com/maker) und speichere deinen Schlüssel mit `/ifttt !set KEY` ein', true)
|
||||
utilities.send_reply(msg, '*Bitte speichere zuerst deinen Schlüssel ein!* Aktiviere dazu den [Maker Channel](https://ifttt.com/maker) und speichere deinen Schlüssel mit `/ifttt !set KEY` ein', true)
|
||||
return
|
||||
end
|
||||
|
||||
if event == '!unauth' then
|
||||
redis:hdel(hash, 'ifttt')
|
||||
utilities.send_reply(self, msg, '*Erfolgreich ausgeloggt!*', true)
|
||||
utilities.send_reply(msg, '*Erfolgreich ausgeloggt!*', true)
|
||||
return
|
||||
end
|
||||
|
||||
utilities.send_reply(self, msg, ifttt:do_ifttt_request(key, event, value1, value2, value3), true)
|
||||
utilities.send_reply(msg, ifttt:do_ifttt_request(key, event, value1, value2, value3), true)
|
||||
end
|
||||
|
||||
return ifttt
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -41,14 +41,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
|
||||
|
@ -62,14 +62,14 @@ end
|
||||
function instagram:action(msg, config, matches)
|
||||
local insta_code = matches[1]
|
||||
local data = instagram:get_insta_data(insta_code)
|
||||
if not data then utilities.send_reply(self, msg, config.errors.connection) return end
|
||||
if not data then utilities.send_reply(msg, config.errors.connection) return end
|
||||
|
||||
local text, image_url = instagram:send_instagram_data(data)
|
||||
if not image_url then utilities.send_reply(self, msg, config.errors.connection) return end
|
||||
if not image_url then 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(image_url)
|
||||
utilities.send_photo(self, msg.chat.id, file, text, msg.message_id)
|
||||
utilities.send_photo(msg.chat.id, file, text, msg.message_id)
|
||||
end
|
||||
|
||||
return instagram
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -23,7 +23,7 @@ function luarun:action(msg, config)
|
||||
|
||||
local input = utilities.input(msg.text)
|
||||
if not input then
|
||||
utilities.send_reply(self, msg, 'Please enter a string to load.')
|
||||
utilities.send_reply(msg, 'Please enter a string to load.')
|
||||
return
|
||||
end
|
||||
|
||||
@ -40,8 +40,8 @@ function luarun:action(msg, config)
|
||||
local URL = require('socket.url')
|
||||
local HTTP = require('socket.http')
|
||||
local HTTPS = require('ssl.https')
|
||||
return function (self, msg, config) ]] .. input .. [[ end
|
||||
]] )()(self, msg, config)
|
||||
return function (msg, config) ]] .. input .. [[ end
|
||||
]] )()(msg, config)
|
||||
if output == nil then
|
||||
output = 'Done!'
|
||||
else
|
||||
@ -53,7 +53,7 @@ function luarun:action(msg, config)
|
||||
end
|
||||
output = '```\n' .. tostring(output) .. '\n```'
|
||||
end
|
||||
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)
|
||||
|
||||
end
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -34,19 +34,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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
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
|
||||
|
@ -191,31 +191,31 @@ function mal:action(msg, config, matches)
|
||||
if matches[1] == 'anime' 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
|
||||
|
@ -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('Setting notify in redis hash '..hash..' to false')
|
||||
redis:hset(hash, 'notify', false)
|
||||
print('Removing '..username..' from 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('Setting notify in redis hash '..hash..' to true')
|
||||
@ -87,11 +87,11 @@ function notify:action(msg, config, matches)
|
||||
redis:hset(hash, 'id', msg.from.id)
|
||||
print('Adding '..username..' to 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
|
||||
|
@ -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
|
||||
|
@ -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
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -7,7 +7,7 @@ post_photo.triggers = {
|
||||
'/nil'
|
||||
}
|
||||
|
||||
function post_photo:pre_process(msg, self, config)
|
||||
function post_photo:pre_process(msg, config)
|
||||
if not msg.document then return msg end -- Ignore
|
||||
local mime_type = msg.document.mime_type
|
||||
local valid_mimetypes = {['image/jpeg'] = true, ['image/png'] = true, ['image/bmp'] = true}
|
||||
@ -20,15 +20,15 @@ function post_photo:pre_process(msg, self, config)
|
||||
return
|
||||
end
|
||||
|
||||
utilities.send_typing(self, msg.chat.id, 'upload_photo')
|
||||
utilities.send_typing(msg.chat.id, 'upload_photo')
|
||||
-- Saving file to the Telegram Cloud
|
||||
local request = bindings.request(self, 'getFile', {
|
||||
local request = bindings.request('getFile', {
|
||||
file_id = file_id
|
||||
} )
|
||||
|
||||
local download_url = 'https://api.telegram.org/file/bot'..config.bot_api_key..'/'..request.result.file_path
|
||||
local file = download_to_file(download_url, msg.file_name)
|
||||
utilities.send_photo(self, msg.chat.id, file, msg.caption, msg.message_id)
|
||||
utilities.send_photo(msg.chat.id, file, msg.caption, msg.message_id)
|
||||
|
||||
return msg
|
||||
end
|
||||
|
@ -15,9 +15,9 @@ end
|
||||
function preview:inline_callback(inline_query, config, matches)
|
||||
local preview_url = matches[1]
|
||||
local res, code = https.request('https://brawlbot.tk/apis/simple_meta_api/?url='..URL.escape(preview_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.remote_code >= 400 then utilities.answer_inline_query(self, inline_query) return end
|
||||
if data.remote_code >= 400 then abort_inline_query(inline_query) return end
|
||||
|
||||
if data.title then
|
||||
title = data.title
|
||||
@ -42,13 +42,13 @@ function preview:inline_callback(inline_query, config, matches)
|
||||
local message_text = '<b>'..title..'</b>'..description_in_text..'\n— '..only_name
|
||||
|
||||
local results = '[{"type":"article","id":"77","title":"'..title..'","description":"'..description..'","url":"'..preview_url..'","thumb_url":"https://anditest.perseus.uberspace.de/inlineQuerys/generic/internet.jpg","thumb_width":150,"thumb_height":150,"hide_url":true,"reply_markup":{"inline_keyboard":[[{"text":"Webseite aufrufen","url":"'..preview_url..'"}]]},"input_message_content":{"message_text":"'..message_text..'","parse_mode":"HTML","disable_web_page_preview":true}}]'
|
||||
utilities.answer_inline_query(self, inline_query, results, 3600, true)
|
||||
utilities.answer_inline_query(inline_query, results, 3600, true)
|
||||
end
|
||||
|
||||
function preview:action(msg)
|
||||
local input = utilities.input_from_msg(msg)
|
||||
if not input then
|
||||
utilities.send_reply(self, msg, preview.doc, true)
|
||||
utilities.send_reply(msg, preview.doc, true)
|
||||
return
|
||||
end
|
||||
|
||||
@ -59,18 +59,18 @@ function preview:action(msg)
|
||||
|
||||
local res = http.request(input)
|
||||
if not res then
|
||||
utilities.send_reply(self, msg, 'Bitte gebe einen validen Link an.')
|
||||
utilities.send_reply(msg, 'Bitte gebe einen validen Link an.')
|
||||
return
|
||||
end
|
||||
|
||||
if res:len() == 0 then
|
||||
utilities.send_reply(self, msg, 'Sorry, dieser Link lässt uns keine Vorschau erstellen.')
|
||||
utilities.send_reply(msg, 'Sorry, dieser Link lässt uns keine Vorschau erstellen.')
|
||||
return
|
||||
end
|
||||
|
||||
-- Invisible zero-width, non-joiner.
|
||||
local output = '<a href="' .. input .. '">' .. utilities.char.zwnj .. '</a>'
|
||||
utilities.send_message(self, msg.chat.id, output, false, nil, 'HTML')
|
||||
utilities.send_message(msg.chat.id, output, false, nil, 'HTML')
|
||||
end
|
||||
|
||||
return preview
|
@ -71,9 +71,9 @@ end
|
||||
|
||||
function qr:inline_callback(inline_query, config, matches)
|
||||
local text = matches[1]
|
||||
if string.len(text) > 200 then utilities.answer_inline_query(self, inline_query) return end
|
||||
if string.len(text) > 200 then abort_inline_query(inline_query) return end
|
||||
local image_url = qr:qr(text, nil, nil, 'jpg')
|
||||
if not image_url then utilities.answer_inline_query(self, inline_query) return end
|
||||
if not image_url then abort_inline_query(inline_query) return end
|
||||
|
||||
local id = 600
|
||||
|
||||
@ -93,7 +93,7 @@ function qr:inline_callback(inline_query, config, matches)
|
||||
end
|
||||
|
||||
local results = results..']'
|
||||
utilities.answer_inline_query(self, inline_query, results, 10000)
|
||||
utilities.answer_inline_query(inline_query, results, 10000)
|
||||
end
|
||||
|
||||
function qr:action(msg, config, matches)
|
||||
@ -108,9 +108,9 @@ function qr:action(msg, config, matches)
|
||||
end
|
||||
|
||||
local image_url = qr:qr(text, color, back)
|
||||
if not image_url then utilities.send_reply(self, msg, config.errors.connection) return end
|
||||
if not image_url then utilities.send_reply(msg, config.errors.connection) return end
|
||||
local file = download_to_file(image_url, 'qr.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 qr
|
||||
|
@ -81,28 +81,28 @@ end
|
||||
|
||||
function quotes:action(msg, config, matches)
|
||||
if matches[1] == "quote" then
|
||||
utilities.send_message(self, msg.chat.id, quotes:get_quote(msg), true)
|
||||
utilities.send_message(msg.chat.id, quotes:get_quote(msg), true)
|
||||
return
|
||||
elseif matches[1] == "addquote" and matches[2] then
|
||||
utilities.send_reply(self, msg, quotes:save_quote(msg), true)
|
||||
utilities.send_reply(msg, quotes:save_quote(msg), true)
|
||||
return
|
||||
elseif matches[1] == "delquote" 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
|
||||
utilities.send_reply(self, msg, quotes:delete_quote(msg), true)
|
||||
utilities.send_reply(msg, quotes:delete_quote(msg), true)
|
||||
return
|
||||
elseif matches[1] == "listquotes" then
|
||||
local link, iserror = quotes:list_quotes(msg)
|
||||
if iserror then
|
||||
utilities.send_reply(self, msg, link, true)
|
||||
utilities.send_reply(msg, link, true)
|
||||
return
|
||||
end
|
||||
utilities.send_reply(self, msg, 'Ich habe eine Liste aller Zitate hochgeladen.', false, '{"inline_keyboard":[[{"text":"Alle Zitate abrufen","url":"'..link..'"}]]}')
|
||||
utilities.send_reply(msg, 'Ich habe eine Liste aller Zitate hochgeladen.', false, '{"inline_keyboard":[[{"text":"Alle Zitate abrufen","url":"'..link..'"}]]}')
|
||||
return
|
||||
end
|
||||
utilities.send_reply(self, msg, quotes.doc, true)
|
||||
utilities.send_reply(msg, quotes.doc, true)
|
||||
end
|
||||
|
||||
return quotes
|
||||
|
@ -52,14 +52,14 @@ function fun: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, fun.doc, true, msg.message_id, true)
|
||||
utilities.send_message(msg.chat.id, fun.doc, true, msg.message_id, true)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
local user_name = get_name(msg)
|
||||
local result = fun:choose_random(user_name, input)
|
||||
utilities.send_message(self, msg.chat.id, result)
|
||||
utilities.send_message(msg.chat.id, result)
|
||||
end
|
||||
|
||||
return fun
|
||||
|
@ -61,15 +61,15 @@ function reddit:action(msg, config)
|
||||
end
|
||||
local jstr, res = https.request(url)
|
||||
if res ~= 200 then
|
||||
utilities.send_reply(self, msg, config.errors.results)
|
||||
utilities.send_reply(msg, config.errors.results)
|
||||
else
|
||||
local jdat = json.decode(jstr)
|
||||
if #jdat.data.children == 0 then
|
||||
utilities.send_reply(self, msg, config.errors.results)
|
||||
utilities.send_reply(msg, config.errors.results)
|
||||
else
|
||||
local output = format_results(jdat.data.children)
|
||||
output = source .. output
|
||||
utilities.send_message(self, msg.chat.id, output, true, nil, true)
|
||||
utilities.send_message(msg.chat.id, output, true, nil, true)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -39,12 +39,12 @@ function reddit_post:action(msg, config, matches)
|
||||
local subreddit = matches[1]
|
||||
local reddit_code = matches[2]
|
||||
local data = reddit_post:get_reddit_data(subreddit, reddit_code)
|
||||
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 = reddit_post:send_reddit_data(data)
|
||||
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
|
||||
|
||||
utilities.send_reply(self, msg, text, true)
|
||||
utilities.send_reply(msg, text, true)
|
||||
end
|
||||
|
||||
return reddit_post
|
||||
|
@ -16,13 +16,13 @@ end
|
||||
function remind:action(msg, config)
|
||||
local input = utilities.input(msg.text)
|
||||
if not input then
|
||||
utilities.send_reply(self, msg, remind.doc, true)
|
||||
utilities.send_reply(msg, remind.doc, true)
|
||||
return
|
||||
end
|
||||
|
||||
local duration = tonumber(utilities.get_word(input, 1))
|
||||
if not duration then
|
||||
utilities.send_reply(self, msg, remind.doc, true)
|
||||
utilities.send_reply(msg, remind.doc, true)
|
||||
return
|
||||
end
|
||||
|
||||
@ -33,12 +33,12 @@ function remind:action(msg, config)
|
||||
end
|
||||
local message = utilities.input(input)
|
||||
if not message then
|
||||
utilities.send_reply(self, msg, remind.doc, true)
|
||||
utilities.send_reply(msg, remind.doc, true)
|
||||
return
|
||||
end
|
||||
|
||||
if #message > config.remind.max_length then
|
||||
utilities.send_reply(self, msg, 'Die maximale Länge einer Erinnerung ist ' .. config.remind.max_length .. '.')
|
||||
utilities.send_reply(msg, 'Die maximale Länge einer Erinnerung ist ' .. config.remind.max_length .. '.')
|
||||
return
|
||||
end
|
||||
|
||||
@ -60,7 +60,7 @@ function remind:action(msg, config)
|
||||
local human_readable_time = convert_timestamp(timestamp, '%H:%M:%S')
|
||||
output = 'Ich werde dich um *'..human_readable_time..' Uhr* erinnern.'
|
||||
end
|
||||
utilities.send_reply(self, msg, output, true)
|
||||
utilities.send_reply(msg, output, true)
|
||||
end
|
||||
|
||||
function remind:cron(config)
|
||||
@ -73,7 +73,7 @@ function remind:cron(config)
|
||||
-- Otherwise, add it to the replacement table.
|
||||
if time > reminder.time then
|
||||
local output = '*ERINNERUNG:*\n"' .. utilities.md_escape(reminder.message) .. '"'
|
||||
local res = utilities.send_message(self, chat_id, output, true, nil, true)
|
||||
local res = utilities.send_message(chat_id, output, true, nil, true)
|
||||
-- If the message fails to send, save it for later (if enabled in config).
|
||||
if res or not config.remind.persist then
|
||||
group[k] = nil
|
||||
|
@ -41,7 +41,7 @@ function respond:inline_callback(inline_query, config, matches)
|
||||
face = '¯\\\\\\_(ツ)_/¯'
|
||||
end
|
||||
results = '[{"type":"article","id":"8","title":"'..face..'","input_message_content":{"message_text":"'..face..'"}}]'
|
||||
utilities.answer_inline_query(self, inline_query, results, 9999)
|
||||
utilities.answer_inline_query(inline_query, results, 9999)
|
||||
end
|
||||
|
||||
function respond:action(msg, config, matches)
|
||||
@ -51,35 +51,35 @@ function respond:action(msg, config, matches)
|
||||
if user_name == "DefenderX" then user_name = "Deffu" end
|
||||
|
||||
if string.match(msg.text, "[Ff][Gg][Tt].? [Ss][Ww][Ii][Ff][Tt]") then
|
||||
utilities.send_message(self, receiver, 'Dünnes Eis, '..user_name..'!')
|
||||
utilities.send_message(receiver, 'Dünnes Eis, '..user_name..'!')
|
||||
return
|
||||
elseif string.match(msg.text, "([Ee][Ii][Nn][Zz][Ii][Gg][Ss][Tt][Ee][Ss])") then
|
||||
utilities.send_message(self, receiver, '*einziges')
|
||||
utilities.send_message(receiver, '*einziges')
|
||||
return
|
||||
elseif string.match(msg.text, "([Ee][Ii][Nn][Zz][Ii][Gg][Ss][Tt][Ee][Rr])") then
|
||||
utilities.send_message(self, receiver, '*einziger')
|
||||
utilities.send_message(receiver, '*einziger')
|
||||
return
|
||||
elseif string.match(msg.text, "([Ee][Ii][Nn][Zz][Ii][Gg][Ss][Tt][Ee])") then
|
||||
utilities.send_message(self, receiver, '*einzige')
|
||||
utilities.send_message(receiver, '*einzige')
|
||||
return
|
||||
elseif string.match(msg.text, "[Bb][Oo][Tt]%??") then
|
||||
utilities.send_reply(self, msg, '*Ich bin da, '..user_name..'!*', true)
|
||||
utilities.send_reply(msg, '*Ich bin da, '..user_name..'!*', true)
|
||||
return
|
||||
elseif string.match(msg.text, "[Ll][Oo][Dd]") then
|
||||
utilities.send_message(self, receiver, 'ಠ_ಠ')
|
||||
utilities.send_message(receiver, 'ಠ_ಠ')
|
||||
return
|
||||
elseif string.match(msg.text, "[Ll][Ff]") then
|
||||
utilities.send_message(self, receiver, '( ͡° ͜ʖ ͡°)')
|
||||
utilities.send_message(receiver, '( ͡° ͜ʖ ͡°)')
|
||||
return
|
||||
elseif string.match(msg.text, "[Nn][Bb][Cc]") or string.match(msg.text, "[Ii][Dd][Cc]") or string.match(msg.text, "[Kk][Aa]") or string.match(msg.text, "[Ii][Dd][Kk]") then
|
||||
utilities.send_message(self, receiver, [[¯\_(ツ)_/¯]])
|
||||
utilities.send_message(receiver, [[¯\_(ツ)_/¯]])
|
||||
return
|
||||
elseif string.match(msg.text, "[Ff][Rr][Oo][Ss][Cc][Hh]") then
|
||||
utilities.send_message(self, receiver, '🐸🐸🐸')
|
||||
utilities.send_message(receiver, '🐸🐸🐸')
|
||||
return
|
||||
elseif string.match(msg.text, "[Ii][Nn][Ll][Oo][Vv][Ee]") then
|
||||
local file = download_to_file(BASE_URL..'/inlove.gif')
|
||||
utilities.send_document(self, receiver, file)
|
||||
utilities.send_document(receiver, file)
|
||||
return
|
||||
elseif string.match(msg.text, "[Ww][Aa][Tt]") then
|
||||
local WAT_URL = BASE_URL..'/wat'
|
||||
@ -95,7 +95,7 @@ function respond:action(msg, config, matches)
|
||||
}
|
||||
local random_wat = math.random(5)
|
||||
local file = download_to_file(WAT_URL..wats[random_wat])
|
||||
utilities.send_photo(self, receiver, file)
|
||||
utilities.send_photo(receiver, file, nil, msg.message_id)
|
||||
return
|
||||
end
|
||||
|
||||
|
@ -23,7 +23,7 @@ function roll:roll_dice()
|
||||
end
|
||||
|
||||
function roll:action(msg)
|
||||
utilities.send_reply(self, msg, 'Du hast eine *'..roll:roll_dice()..'* gewürfelt.', true)
|
||||
utilities.send_reply(msg, 'Du hast eine *'..roll:roll_dice()..'* gewürfelt.', true)
|
||||
end
|
||||
|
||||
return roll
|
||||
|
@ -212,42 +212,42 @@ function rss: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 = rss:subscribe(id, matches[2])
|
||||
utilities.send_reply(self, msg, output, 'HTML')
|
||||
utilities.send_reply(msg, output, 'HTML')
|
||||
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 = rss:unsubscribe(id, matches[2])
|
||||
utilities.send_reply(self, msg, output, 'HTML')
|
||||
utilities.send_reply(msg, output, 'HTML')
|
||||
return
|
||||
elseif matches[1] == 'rss' 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 = rss:print_subs(id, chat_name)
|
||||
utilities.send_reply(self, msg, output, 'HTML')
|
||||
utilities.send_reply(msg, output, 'HTML')
|
||||
return
|
||||
end
|
||||
|
||||
@ -259,42 +259,39 @@ function rss: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 = rss:subscribe(id, matches[2])
|
||||
utilities.send_reply(self, msg, output, 'HTML')
|
||||
utilities.send_reply(msg, output, 'HTML')
|
||||
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 = rss:unsubscribe(id, matches[2])
|
||||
utilities.send_reply(self, msg, output, 'HTML', '{"hide_keyboard":true}')
|
||||
utilities.send_reply(msg, output, 'HTML', '{"hide_keyboard":true}')
|
||||
return
|
||||
elseif matches[1] == 'del' and not matches[2] then
|
||||
local list_subs, keyboard = rss:print_subs(id, chat_name)
|
||||
utilities.send_reply(self, msg, list_subs, 'HTML', keyboard)
|
||||
utilities.send_reply(msg, list_subs, 'HTML', 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
|
||||
rss:cron(self)
|
||||
rss:cron()
|
||||
return
|
||||
end
|
||||
|
||||
local output = rss:print_subs(id, chat_name)
|
||||
utilities.send_reply(self, msg, output, 'HTML')
|
||||
utilities.send_reply(msg, output, 'HTML')
|
||||
return
|
||||
end
|
||||
|
||||
function rss:cron(self_plz)
|
||||
if not self.BASE_URL then
|
||||
self = self_plz
|
||||
end
|
||||
function rss:cron()
|
||||
local keys = redis:keys(get_base_redis("*", "subs"))
|
||||
for k,v in pairs(keys) do
|
||||
local base = string.match(v, "rss:(.+):subs") -- Get the URL base
|
||||
@ -340,7 +337,7 @@ function rss:cron(self_plz)
|
||||
for k2, receiver in pairs(redis:smembers(v)) do
|
||||
local receiver = string.gsub(receiver, 'chat%#id', '')
|
||||
local receiver = string.gsub(receiver, 'user%#id', '')
|
||||
utilities.send_message(self, receiver, text, true, nil, 'HTML')
|
||||
utilities.send_message(receiver, text, true, nil, 'HTML')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -22,10 +22,10 @@ function entergroup:chat_new_user(msg, self)
|
||||
return
|
||||
end
|
||||
local text = 'Hallo '..user_name..', willkommen bei <b>'..chat_title..'</b>!'..added_by
|
||||
utilities.send_reply(self, msg, text, 'HTML')
|
||||
utilities.send_reply(msg, text, 'HTML')
|
||||
end
|
||||
|
||||
function entergroup:chat_del_user(msg, self)
|
||||
function entergroup:chat_del_user(msg)
|
||||
if msg.left_chat_member.id == msg.from.id then -- silent ignore, if user wasn't kicked
|
||||
return
|
||||
end
|
||||
@ -36,7 +36,7 @@ function entergroup:chat_del_user(msg, self)
|
||||
at_name = ''
|
||||
end
|
||||
local text = '<b>'..user_name..'</b> wurde von <b>'..msg.from.first_name..'</b>'..at_name..' aus der Gruppe gekickt.'
|
||||
utilities.send_reply(self, msg, text, 'HTML')
|
||||
utilities.send_reply(msg, text, 'HTML')
|
||||
end
|
||||
|
||||
function entergroup:action(msg, config, matches)
|
||||
@ -45,7 +45,7 @@ function entergroup:action(msg, config, matches)
|
||||
if matches[1] == 'new_chat_member' then
|
||||
entergroup:chat_new_user(msg, self)
|
||||
elseif matches[1] == 'left_chat_member'then
|
||||
entergroup:chat_del_user(msg, self)
|
||||
entergroup:chat_del_user(msg)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -7,8 +7,8 @@ leave_group.triggers = {
|
||||
|
||||
local report_to_admin = true -- set to false to not be notified, when Bot leaves groups without you
|
||||
|
||||
function leave_group:check_for_admin(msg, self, config)
|
||||
local result = bindings.request(self, 'getChatMember', {
|
||||
function leave_group:check_for_admin(msg, config)
|
||||
local result = bindings.request('getChatMember', {
|
||||
chat_id = msg.chat.id,
|
||||
user_id = config.admin
|
||||
} )
|
||||
@ -25,11 +25,11 @@ end
|
||||
|
||||
function leave_group:action(msg, config)
|
||||
if not is_service_msg(msg) then return end -- Bad attempt at trolling!
|
||||
local admin_in_group = leave_group:check_for_admin(msg, self, config)
|
||||
local admin_in_group = leave_group:check_for_admin(msg, config)
|
||||
if not admin_in_group then
|
||||
print('Admin ist nicht in der Gruppe, verlasse sie deshalb...')
|
||||
utilities.send_reply(self, msg, 'Dieser Bot wurde in eine fremde Gruppe hinzugefügt. Dies wird gemeldet!\nThis bot was added to foreign group. This incident will be reported!')
|
||||
local result = bindings.request(self, 'leaveChat', {
|
||||
utilities.send_reply(msg, 'Dieser Bot wurde in eine fremde Gruppe hinzugefügt. Dies wird gemeldet!\nThis bot was added to foreign group. This incident will be reported!')
|
||||
local result = bindings.request('leaveChat', {
|
||||
chat_id = msg.chat.id
|
||||
} )
|
||||
local chat_name = msg.chat.title
|
||||
@ -37,7 +37,7 @@ function leave_group:action(msg, config)
|
||||
local from = msg.from.name
|
||||
local from_id = msg.from.id
|
||||
if report_to_admin then
|
||||
utilities.send_message(self, config.admin, '#WARNUNG: Bot wurde in fremde Gruppe hinzugefügt:\nGruppenname: '..chat_name..' ('..chat_id..')\nHinzugefügt von: '..from..' ('..from_id..')')
|
||||
utilities.send_message(config.admin, '#WARNUNG: Bot wurde in fremde Gruppe hinzugefügt:\nGruppenname: '..chat_name..' ('..chat_id..')\nHinzugefügt von: '..from..' ('..from_id..')')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -60,7 +60,7 @@ function migrate:action(msg, config, matches)
|
||||
end
|
||||
|
||||
print('--- SUPERGROUP MIGRATION ENDED ---')
|
||||
utilities.send_message(self, new_id, 'Die User-ID dieser Gruppe ist nun '..new_id..'.\nAlle Daten wurden übertragen.')
|
||||
utilities.send_message(new_id, 'Die User-ID dieser Gruppe ist nun '..new_id..'.\nAlle Daten wurden übertragen.')
|
||||
end
|
||||
|
||||
return migrate
|
@ -33,7 +33,7 @@ end
|
||||
function set:action(msg)
|
||||
local input = utilities.input(msg.text)
|
||||
if not input or not input:match('([^%s]+) (.+)') then
|
||||
utilities.send_message(self, msg.chat.id, set.doc, true, msg.message_id, true)
|
||||
utilities.send_message(msg.chat.id, set.doc, true, msg.message_id, true)
|
||||
return
|
||||
end
|
||||
|
||||
@ -46,7 +46,7 @@ function set:action(msg)
|
||||
output = set:save_value(msg, name, value)
|
||||
end
|
||||
|
||||
utilities.send_message(self, msg.chat.id, output, true, nil, true)
|
||||
utilities.send_message(msg.chat.id, output, true, nil, true)
|
||||
end
|
||||
|
||||
return set
|
||||
|
@ -37,18 +37,18 @@ function settings:action(msg, config, matches)
|
||||
local hash = 'user:'..msg.from.id
|
||||
|
||||
if matches[1] == '⚙ Einstellungen' or matches[1] == '/settings' then
|
||||
utilities.send_reply(self, msg, 'Was möchtest du einstellen?', false, '{"keyboard":'..settings:keyboard(msg.from.id)..', "one_time_keyboard":true, "selective":true, "resize_keyboard":true}')
|
||||
utilities.send_reply(msg, 'Was möchtest du einstellen?', false, '{"keyboard":'..settings:keyboard(msg.from.id)..', "one_time_keyboard":true, "selective":true, "resize_keyboard":true}')
|
||||
return
|
||||
elseif matches[1] == '💤 AFK-Keyboard einschalten' then
|
||||
redis:hset(hash, 'afk_keyboard', 'true')
|
||||
utilities.send_reply(self, msg, 'Das AFK-Keyboard wurde erfolgreich *eingeschaltet*.', true, '{"keyboard":'..settings:keyboard(msg.from.id)..', "one_time_keyboard":true, "selective":true, "resize_keyboard":true}')
|
||||
utilities.send_reply(msg, 'Das AFK-Keyboard wurde erfolgreich *eingeschaltet*.', true, '{"keyboard":'..settings:keyboard(msg.from.id)..', "one_time_keyboard":true, "selective":true, "resize_keyboard":true}')
|
||||
return
|
||||
elseif matches[1] == '💤 AFK-Keyboard ausschalten' then
|
||||
redis:hset(hash, 'afk_keyboard', 'false')
|
||||
utilities.send_reply(self, msg, 'Das AFK-Keyboard wurde erfolgreich *ausgeschaltet*.', true, '{"keyboard":'..settings:keyboard(msg.from.id)..', "one_time_keyboard":true, "selective":true, "resize_keyboard":true}')
|
||||
utilities.send_reply(msg, 'Das AFK-Keyboard wurde erfolgreich *ausgeschaltet*.', true, '{"keyboard":'..settings:keyboard(msg.from.id)..', "one_time_keyboard":true, "selective":true, "resize_keyboard":true}')
|
||||
return
|
||||
elseif matches[1] == '❌ Einstellungen verstecken' then
|
||||
utilities.send_reply(self, msg, 'Um die Einstellungen wieder einzublenden, führe /settings aus.', true, '{"hide_keyboard":true}')
|
||||
utilities.send_reply(msg, 'Um die Einstellungen wieder einzublenden, führe /settings aus.', true, '{"hide_keyboard":true}')
|
||||
return
|
||||
end
|
||||
end
|
||||
|
@ -6,13 +6,13 @@ end
|
||||
|
||||
function shell:action(msg, config)
|
||||
if not is_sudo(msg, config) then
|
||||
utilities.send_reply(self, msg, config.errors.sudo)
|
||||
utilities.send_reply(msg, config.errors.sudo)
|
||||
return
|
||||
end
|
||||
|
||||
local input = utilities.input(msg.text)
|
||||
if not input then
|
||||
utilities.send_reply(self, msg, 'Bitte gib ein Kommando ein.')
|
||||
utilities.send_reply(msg, 'Bitte gib ein Kommando ein.')
|
||||
return
|
||||
end
|
||||
input = input:gsub('—', '--')
|
||||
@ -25,7 +25,7 @@ function shell:action(msg, config)
|
||||
end
|
||||
output = output:gsub('<pre>%\n', '<pre>')
|
||||
output = output:gsub('%\n%\n</pre>', '</pre>')
|
||||
utilities.send_message(self, msg.chat.id, output, true, msg.message_id, 'HTML')
|
||||
utilities.send_message(msg.chat.id, output, true, msg.message_id, 'HTML')
|
||||
end
|
||||
|
||||
return shell
|
||||
|
@ -9,7 +9,7 @@ end
|
||||
|
||||
function site_header: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)
|
||||
end
|
||||
|
||||
local url = matches[2]
|
||||
@ -20,7 +20,7 @@ function site_header:action(msg, config, matches)
|
||||
end
|
||||
local output = io.popen(input):read('*all')
|
||||
output = '```\n' .. output .. '\n```'
|
||||
utilities.send_reply(self, msg, output, true)
|
||||
utilities.send_reply(msg, output, true)
|
||||
end
|
||||
|
||||
return site_header
|
||||
|
@ -30,8 +30,8 @@ end
|
||||
|
||||
function soundcloud:action(msg, config, matches)
|
||||
local text = soundcloud:send_soundcloud_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 soundcloud
|
||||
|
@ -7,9 +7,9 @@ speedtest.triggers = {
|
||||
|
||||
function speedtest:action(msg, config, matches)
|
||||
local url = 'http://www.speedtest.net/result/'..matches[1]..'.png'
|
||||
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_photo(msg.chat.id, file, nil, msg.message_id)
|
||||
end
|
||||
|
||||
return speedtest
|
@ -15,7 +15,7 @@ function spotify:get_track_data(track)
|
||||
return data
|
||||
end
|
||||
|
||||
function spotify:send_track_data(data, self, msg)
|
||||
function spotify:send_track_data(data, msg)
|
||||
local name = data.name
|
||||
local album = data.album.name
|
||||
local artist = data.artists[1].name
|
||||
@ -28,20 +28,20 @@ function spotify:send_track_data(data, self, msg)
|
||||
|
||||
local text = '*'..name..'* von *'..artist..'* aus dem Album *'..album..'* _('..duration..')_'
|
||||
if preview then
|
||||
utilities.send_typing(self, msg.chat.id, 'upload_audio')
|
||||
utilities.send_typing(msg.chat.id, 'upload_audio')
|
||||
local file = download_to_file(preview, name..'.mp3')
|
||||
utilities.send_audio(self, msg.chat.id, file, msg.message_id, totalseconds, artist, name)
|
||||
utilities.send_audio(msg.chat.id, file, msg.message_id, totalseconds, artist, name)
|
||||
return
|
||||
else
|
||||
utilities.send_reply(self, msg, text, true)
|
||||
utilities.send_reply(msg, text, true)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
function spotify:action(msg, config, matches)
|
||||
local data = spotify:get_track_data(matches[1])
|
||||
if not data then utilities.send_reply(self, msg, config.errors.connection) return end
|
||||
spotify:send_track_data(data, self, msg)
|
||||
if not data then utilities.send_reply(msg, config.errors.connection) return end
|
||||
spotify:send_track_data(data, msg)
|
||||
return
|
||||
end
|
||||
|
||||
|
@ -79,7 +79,7 @@ function stats:chat_stats(chat_id)
|
||||
return text
|
||||
end
|
||||
|
||||
function stats:pre_process(msg, self)
|
||||
function stats:pre_process(msg)
|
||||
if msg.left_chat_member then
|
||||
-- delete user from redis set, but keep message count
|
||||
local hash = 'chat:'..msg.chat.id..':users'
|
||||
@ -126,21 +126,21 @@ function stats:action(msg, config, matches)
|
||||
|
||||
if not matches[2] then
|
||||
if msg.chat.type == 'private' then
|
||||
utilities.send_reply(self, msg, 'Stats funktionieren nur in Chats!')
|
||||
utilities.send_reply(msg, 'Stats funktionieren nur in Chats!')
|
||||
return
|
||||
else
|
||||
local chat_id = msg.chat.id
|
||||
utilities.send_reply(self, msg, stats:chat_stats(chat_id), 'HTML')
|
||||
utilities.send_reply(msg, stats:chat_stats(chat_id), 'HTML')
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
if matches[2] == "chat" then
|
||||
if msg.from.id ~= config.admin then
|
||||
utilities.send_reply(self, msg, config.errors.sudo)
|
||||
utilities.send_reply(msg, config.errors.sudo)
|
||||
return
|
||||
else
|
||||
utilities.send_reply(self, msg, stats:chat_stats(matches[3]), 'HTML')
|
||||
utilities.send_reply(msg, stats:chat_stats(matches[3]), 'HTML')
|
||||
return
|
||||
end
|
||||
end
|
||||
|
@ -35,7 +35,7 @@ function steam:price_info(data)
|
||||
return price
|
||||
end
|
||||
|
||||
function steam:send_steam_data(data, self, msg)
|
||||
function steam:send_steam_data(data, msg)
|
||||
local description = string.sub(unescape(data.about_the_game:gsub("%b<>", "")), 1, DESC_LENTH) .. '...'
|
||||
local title = data.name
|
||||
local price = steam:price_info(data.price_overview)
|
||||
@ -47,12 +47,12 @@ end
|
||||
|
||||
function steam:action(msg)
|
||||
local data = steam:get_steam_data(matches[1])
|
||||
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 = steam:send_steam_data(data, self, msg)
|
||||
utilities.send_typing(self, msg.chat.id, 'upload_photo')
|
||||
utilities.send_photo(self, msg.chat.id, download_to_file(image_url, matches[1]..'.jpg'), nil, msg.message_id)
|
||||
utilities.send_reply(self, msg, text, true)
|
||||
local text, image_url = steam:send_steam_data(data, msg)
|
||||
utilities.send_typing(msg.chat.id, 'upload_photo')
|
||||
utilities.send_photo(msg.chat.id, download_to_file(image_url, matches[1]..'.jpg'), nil, msg.message_id)
|
||||
utilities.send_reply(msg, text, true)
|
||||
end
|
||||
|
||||
return steam
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user