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
17
README.md
17
README.md
@ -106,7 +106,8 @@ Einige Funktionen, die oft benötigt werden, sind in `utilites.lua` verfügbar.
|
|||||||
|
|
||||||
## Bindings
|
## Bindings
|
||||||
**Diese Sektion wurde noch nicht lokalisiert.**
|
**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).
|
`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(
|
bindings.request(
|
||||||
self,
|
|
||||||
'sendMessage',
|
'sendMessage',
|
||||||
{
|
{
|
||||||
chat_id = 987654321,
|
chat_id = 987654321,
|
||||||
@ -125,34 +125,31 @@ bindings.request(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
bindings.sendMessage(
|
bindings.sendMessage{
|
||||||
self,
|
|
||||||
{
|
|
||||||
chat_id = 987654321,
|
chat_id = 987654321,
|
||||||
text = 'Quick brown fox.',
|
text = 'Quick brown fox.',
|
||||||
reply_to_message_id = 54321,
|
reply_to_message_id = 54321,
|
||||||
disable_web_page_preview = false,
|
disable_web_page_preview = false,
|
||||||
parse_method = 'Markdown'
|
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:
|
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:
|
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:
|
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".
|
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.
|
otouto's bindings for the Telegram bot API.
|
||||||
https://core.telegram.org/bots/api
|
https://core.telegram.org/bots/api
|
||||||
Copyright 2016 topkecleon. Published under the AGPLv3.
|
|
||||||
|
|
||||||
See the "Bindings" section of README.md for usage information.
|
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 = {}
|
local bindings = {}
|
||||||
@ -15,6 +28,11 @@ local JSON = require('dkjson')
|
|||||||
local ltn12 = require('ltn12')
|
local ltn12 = require('ltn12')
|
||||||
local MP_ENCODE = require('multipart-post').encode
|
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.
|
-- Build and send a request to the API.
|
||||||
-- Expecting self, method, and parameters, where method is a string indicating
|
-- 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
|
-- 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
|
-- Returns the table response with success. Returns false and the table
|
||||||
-- response with failure. Returns false and false with a connection error.
|
-- response with failure. Returns false and false with a connection error.
|
||||||
-- To mimic old/normal behavior, it errs if used with an invalid method.
|
-- 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 {}
|
parameters = parameters or {}
|
||||||
for k,v in pairs(parameters) do
|
for k,v in pairs(parameters) do
|
||||||
parameters[k] = tostring(v)
|
parameters[k] = tostring(v)
|
||||||
@ -49,7 +67,7 @@ function bindings:request(method, parameters, file)
|
|||||||
local response = {}
|
local response = {}
|
||||||
local body, boundary = MP_ENCODE(parameters)
|
local body, boundary = MP_ENCODE(parameters)
|
||||||
local success, code = HTTPS.request{
|
local success, code = HTTPS.request{
|
||||||
url = self.BASE_URL .. method,
|
url = bindings.BASE_URL .. method,
|
||||||
method = 'POST',
|
method = 'POST',
|
||||||
headers = {
|
headers = {
|
||||||
["Content-Type"] = "multipart/form-data; boundary=" .. boundary,
|
["Content-Type"] = "multipart/form-data; boundary=" .. boundary,
|
||||||
@ -76,8 +94,8 @@ function bindings:request(method, parameters, file)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function bindings.gen(_, key)
|
function bindings.gen(_, key)
|
||||||
return function(self, params, file)
|
return function(params, file)
|
||||||
return bindings.request(self, key, params, file)
|
return bindings.request(key, params, file)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
setmetatable(bindings, { __index = bindings.gen })
|
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 = {}
|
local bot = {}
|
||||||
|
|
||||||
bindings = require('otouto.bindings')
|
bot.version = '2.2.7'
|
||||||
utilities = require('otouto.utilities')
|
|
||||||
|
|
||||||
bot.version = '2.2.6.3'
|
|
||||||
|
|
||||||
function bot:init(config) -- The function run when the bot is started or reloaded.
|
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()
|
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.
|
-- Fetch bot information. Try until it succeeds.
|
||||||
repeat
|
repeat
|
||||||
print('Fetching bot information...')
|
print('Fetching bot information...')
|
||||||
self.info = bindings.getMe(self)
|
self.info = bindings.getMe()
|
||||||
until self.info
|
until self.info
|
||||||
self.info = self.info.result
|
self.info = self.info.result
|
||||||
|
|
||||||
@ -87,7 +100,7 @@ function bot:on_callback_receive(callback, msg, config) -- whenever a new callba
|
|||||||
-- vardump(callback)
|
-- vardump(callback)
|
||||||
|
|
||||||
if msg.date < os.time() - 1800 then -- Do not process old messages.
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -99,14 +112,14 @@ function bot:on_callback_receive(callback, msg, config) -- whenever a new callba
|
|||||||
local user_id = callback.from.id
|
local user_id = callback.from.id
|
||||||
local chat_id = msg.chat.id
|
local chat_id = msg.chat.id
|
||||||
if redis:get('blocked:'..user_id) then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Check if user is banned
|
-- Check if user is banned
|
||||||
local banned = redis:get('banned:'..chat_id..':'..user_id)
|
local banned = redis:get('banned:'..chat_id..':'..user_id)
|
||||||
if banned then
|
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
|
return
|
||||||
end
|
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
|
if msg.chat.type == 'group' or msg.chat.type == 'supergroup' then
|
||||||
local allowed = redis:get('whitelist:chat#id'.. chat_id)
|
local allowed = redis:get('whitelist:chat#id'.. chat_id)
|
||||||
if not allowed then
|
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
|
return
|
||||||
end
|
end
|
||||||
else
|
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
|
return
|
||||||
end
|
end
|
||||||
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.
|
-- but he WON'T be able to make new requests.
|
||||||
local user_id = inline_query.from.id
|
local user_id = inline_query.from.id
|
||||||
if redis:get('blocked:'..user_id) then
|
if redis:get('blocked:'..user_id) then
|
||||||
utilities.answer_inline_query(self, inline_query, nil, 0, true)
|
abort_inline_query(inline_query)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if not config.enable_inline_for_everyone then
|
if not config.enable_inline_for_everyone then
|
||||||
local is_whitelisted = redis:get('whitelist:user#id'..inline_query.from.id)
|
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
|
end
|
||||||
|
|
||||||
if inline_query.query:match('"') then
|
if inline_query.query:match('"') then
|
||||||
@ -175,7 +188,7 @@ function bot:process_inline_query(inline_query, config) -- When an inline query
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Stop the spinning circle
|
-- Stop the spinning circle
|
||||||
utilities.answer_inline_query(self, inline_query, nil, 0, true)
|
abort_inline_query(inline_query)
|
||||||
end
|
end
|
||||||
|
|
||||||
function bot:run(config)
|
function bot:run(config)
|
||||||
@ -183,7 +196,7 @@ function bot:run(config)
|
|||||||
|
|
||||||
while self.is_started do
|
while self.is_started do
|
||||||
-- Update loop
|
-- 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
|
if res then
|
||||||
-- Iterate over every new message.
|
-- Iterate over every new message.
|
||||||
for n=1, #res.result do
|
for n=1, #res.result do
|
||||||
@ -208,9 +221,9 @@ function bot:run(config)
|
|||||||
for n=1, #self.plugins do
|
for n=1, #self.plugins do
|
||||||
local v = self.plugins[n]
|
local v = self.plugins[n]
|
||||||
if v.cron then -- Call each plugin's cron function, if it has one.
|
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
|
if not result then
|
||||||
utilities.handle_exception(self, err, 'CRON: ' .. n, config)
|
utilities.handle_exception(err, 'CRON: ' .. n, config.log_chat)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -232,7 +245,8 @@ function pre_process_msg(self, msg, config)
|
|||||||
local plugin = self.plugins[n]
|
local plugin = self.plugins[n]
|
||||||
if plugin.pre_process and msg then
|
if plugin.pre_process and msg then
|
||||||
-- print('Preprocess '..plugin.name) -- remove comment to restore old behaviour
|
-- 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
|
||||||
end
|
end
|
||||||
return new_msg
|
return new_msg
|
||||||
@ -274,7 +288,7 @@ function match_plugins(self, msg, config, plugin)
|
|||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
if not success then
|
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
|
return
|
||||||
end
|
end
|
||||||
-- if one pattern matches, end
|
-- if one pattern matches, end
|
||||||
@ -310,12 +324,17 @@ function create_plugin_set()
|
|||||||
'control',
|
'control',
|
||||||
'about',
|
'about',
|
||||||
'id',
|
'id',
|
||||||
|
'post_photo',
|
||||||
|
'images',
|
||||||
|
'media',
|
||||||
|
'service_migrate_to_supergroup',
|
||||||
'creds',
|
'creds',
|
||||||
'echo',
|
'echo',
|
||||||
'currency',
|
'currency',
|
||||||
'banhammer',
|
'banhammer',
|
||||||
'channels',
|
'channels',
|
||||||
'plugins',
|
'plugins',
|
||||||
|
'settings',
|
||||||
'help'
|
'help'
|
||||||
}
|
}
|
||||||
print ('enabling a few plugins - saving to redis set telegram:enabled_plugins')
|
print ('enabling a few plugins - saving to redis set telegram:enabled_plugins')
|
||||||
|
@ -28,7 +28,7 @@ end
|
|||||||
|
|
||||||
function ninegag:inline_callback(inline_query, config)
|
function ninegag:inline_callback(inline_query, config)
|
||||||
local res, code = http.request(url)
|
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 gag = json.decode(res)
|
||||||
|
|
||||||
local results = '['
|
local results = '['
|
||||||
@ -42,19 +42,19 @@ function ninegag:inline_callback(inline_query, config)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
local results = results..']'
|
local results = results..']'
|
||||||
utilities.answer_inline_query(self, inline_query, results, 300)
|
utilities.answer_inline_query(inline_query, results, 300)
|
||||||
end
|
end
|
||||||
|
|
||||||
function ninegag:action(msg, config)
|
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()
|
local url, title, post_url = ninegag:get_9GAG()
|
||||||
if not url then
|
if not url then
|
||||||
utilities.send_reply(self, msg, config.errors.connection)
|
utilities.send_reply(msg, config.errors.connection)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local file = download_to_file(url)
|
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
|
end
|
||||||
|
|
||||||
return ninegag
|
return ninegag
|
||||||
|
@ -14,7 +14,7 @@ function about:init(config)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function about:action(msg, config)
|
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
|
end
|
||||||
|
|
||||||
return about
|
return about
|
||||||
|
@ -27,11 +27,11 @@ function adfly:inline_callback(inline_query, config, matches)
|
|||||||
url = redis:get(hash)
|
url = redis:get(hash)
|
||||||
end
|
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
|
||||||
if url == 'NOTFOUND' then utilities.answer_inline_query(self, 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..'"}}]'
|
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
|
end
|
||||||
|
|
||||||
function adfly:action(msg, config, matches)
|
function adfly:action(msg, config, matches)
|
||||||
@ -40,17 +40,17 @@ function adfly:action(msg, config, matches)
|
|||||||
if redis:exists(hash) == false then
|
if redis:exists(hash) == false then
|
||||||
local expanded_url = adfly:expand_adfly_link(adfly_code)
|
local expanded_url = adfly:expand_adfly_link(adfly_code)
|
||||||
if not expanded_url then
|
if not expanded_url then
|
||||||
utilities.send_reply(self, msg, config.errors.connection)
|
utilities.send_reply(msg, config.errors.connection)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
if expanded_url == 'NOTFOUND' then
|
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
|
return
|
||||||
end
|
end
|
||||||
utilities.send_reply(self, msg, expanded_url)
|
utilities.send_reply(msg, expanded_url)
|
||||||
else
|
else
|
||||||
local data = redis:get(hash)
|
local data = redis:get(hash)
|
||||||
utilities.send_reply(self, msg, data)
|
utilities.send_reply(msg, data)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -58,10 +58,10 @@ function afk:switch_afk(user_name, user_id, chat_id, timestamp, text)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function afk:pre_process(msg, self)
|
function afk:pre_process(msg)
|
||||||
if msg.chat.type == "private" then
|
if msg.chat.type == "private" then
|
||||||
-- Ignore
|
-- Ignore
|
||||||
return
|
return msg
|
||||||
end
|
end
|
||||||
|
|
||||||
local user_name = get_name(msg)
|
local user_name = get_name(msg)
|
||||||
@ -84,15 +84,15 @@ function afk:pre_process(msg, self)
|
|||||||
if afk_text then
|
if afk_text then
|
||||||
redis:hset(hash, 'afk_text', false)
|
redis:hset(hash, 'afk_text', false)
|
||||||
if show_afk_keyboard == 'true' then
|
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
|
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
|
end
|
||||||
else
|
else
|
||||||
if show_afk_keyboard == 'true' then
|
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
|
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
|
end
|
||||||
end
|
end
|
||||||
@ -102,7 +102,7 @@ end
|
|||||||
|
|
||||||
function afk:action(msg, config, matches)
|
function afk:action(msg, config, matches)
|
||||||
if msg.chat.type == "private" then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -118,7 +118,7 @@ function afk:action(msg, config, matches)
|
|||||||
keyboard = nil
|
keyboard = nil
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
return afk
|
return afk
|
@ -96,15 +96,15 @@ function app_store:action(msg, config, matches)
|
|||||||
local data = app_store:get_appstore_data()
|
local data = app_store:get_appstore_data()
|
||||||
if data == nil then print('Das Appstore-Plugin unterstützt nur Apps!') end
|
if data == nil then print('Das Appstore-Plugin unterstützt nur Apps!') end
|
||||||
if data == 'HTTP-FEHLER' or data == 'NOTFOUND' then
|
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
|
return
|
||||||
else
|
else
|
||||||
local output, image_url = app_store:send_appstore_data(data)
|
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
|
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)
|
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
|
end
|
||||||
end
|
end
|
||||||
|
@ -59,8 +59,8 @@ function bImages:inline_callback(inline_query, config, matches)
|
|||||||
results = bImages:getImages(query)
|
results = bImages:getImages(query)
|
||||||
end
|
end
|
||||||
|
|
||||||
if not results then utilities.answer_inline_query(self, inline_query) return end
|
if not results then abort_inline_query(inline_query) return end
|
||||||
utilities.answer_inline_query(self, inline_query, results, 3600)
|
utilities.answer_inline_query(inline_query, results, 3600)
|
||||||
end
|
end
|
||||||
|
|
||||||
function bImages:action()
|
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`.]]
|
Alternativ kann auch auf die Nachricht des Users geantwortet werden, die Befehle sind dnn die obrigen ohne `user` bzw.`delete`.]]
|
||||||
end
|
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
|
if user_id == tostring(our_id) then
|
||||||
return "Ich werde mich nicht selbst kicken!"
|
return "Ich werde mich nicht selbst kicken!"
|
||||||
else
|
else
|
||||||
local request = bindings.request(self, 'kickChatMember', {
|
local request = bindings.request('kickChatMember', {
|
||||||
chat_id = chat_id,
|
chat_id = chat_id,
|
||||||
user_id = user_id
|
user_id = user_id
|
||||||
} )
|
} )
|
||||||
@ -57,7 +57,7 @@ function banhammer:kick_user(user_id, chat_id, self, onlykick)
|
|||||||
end
|
end
|
||||||
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
|
if user_id == tostring(our_id) then
|
||||||
return "Ich werde mich nicht selbst kicken!"
|
return "Ich werde mich nicht selbst kicken!"
|
||||||
else
|
else
|
||||||
@ -65,15 +65,15 @@ function banhammer:ban_user(user_id, chat_id, self)
|
|||||||
local hash = 'banned:'..chat_id..':'..user_id
|
local hash = 'banned:'..chat_id..':'..user_id
|
||||||
redis:set(hash, true)
|
redis:set(hash, true)
|
||||||
-- Kick from chat
|
-- Kick from chat
|
||||||
return banhammer:kick_user(user_id, chat_id, self)
|
return banhammer:kick_user(user_id, chat_id)
|
||||||
end
|
end
|
||||||
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
|
local hash = 'banned:'..chat_id..':'..user_id
|
||||||
redis:del(hash)
|
redis:del(hash)
|
||||||
if chat_type == 'supergroup' then
|
if chat_type == 'supergroup' then
|
||||||
bindings.request(self, 'unbanChatMember', {
|
bindings.request('unbanChatMember', {
|
||||||
chat_id = chat_id,
|
chat_id = chat_id,
|
||||||
user_id = user_id
|
user_id = user_id
|
||||||
} )
|
} )
|
||||||
@ -99,7 +99,7 @@ function banhammer:is_chat_whitelisted(id)
|
|||||||
return white
|
return white
|
||||||
end
|
end
|
||||||
|
|
||||||
function banhammer:pre_process(msg, self, config)
|
function banhammer:pre_process(msg, config)
|
||||||
-- SERVICE MESSAGE
|
-- SERVICE MESSAGE
|
||||||
if msg.new_chat_member then
|
if msg.new_chat_member then
|
||||||
local user_id = msg.new_chat_member.id
|
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)
|
local banned = banhammer:is_banned(user_id, msg.chat.id)
|
||||||
if banned then
|
if banned then
|
||||||
print('User is banned!')
|
print('User is banned!')
|
||||||
banhammer:kick_user(user_id, msg.chat.id, self, true)
|
banhammer:kick_user(user_id, msg.chat.id, true)
|
||||||
end
|
end
|
||||||
-- No further checks
|
-- No further checks
|
||||||
return msg
|
return msg
|
||||||
@ -120,7 +120,7 @@ function banhammer:pre_process(msg, self, config)
|
|||||||
local banned = banhammer:is_banned(user_id, chat_id)
|
local banned = banhammer:is_banned(user_id, chat_id)
|
||||||
if banned then
|
if banned then
|
||||||
print('Banned user talking!')
|
print('Banned user talking!')
|
||||||
banhammer:ban_user(user_id, chat_id, self)
|
banhammer:ban_user(user_id, chat_id)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -156,7 +156,7 @@ function banhammer:pre_process(msg, self, config)
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
if not has_been_warned then
|
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)
|
redis:hset('user:'..user_id, 'has_been_warned', true)
|
||||||
else
|
else
|
||||||
print('User has already been warned!')
|
print('User has already been warned!')
|
||||||
@ -182,7 +182,7 @@ function banhammer:action(msg, config, matches)
|
|||||||
|
|
||||||
if matches[1] == 'leave' then
|
if matches[1] == 'leave' then
|
||||||
if msg.chat.type == 'group' or msg.chat.type == 'supergroup' then
|
if msg.chat.type == 'group' or msg.chat.type == 'supergroup' then
|
||||||
bindings.request(self, 'leaveChat', {
|
bindings.request('leaveChat', {
|
||||||
chat_id = msg.chat.id
|
chat_id = msg.chat.id
|
||||||
} )
|
} )
|
||||||
return
|
return
|
||||||
@ -207,17 +207,17 @@ function banhammer:action(msg, config, matches)
|
|||||||
|
|
||||||
if msg.chat.type == 'group' or msg.chat.type == 'supergroup' then
|
if msg.chat.type == 'group' or msg.chat.type == 'supergroup' then
|
||||||
if matches[2] == 'user' or not matches[2] then
|
if matches[2] == 'user' or not matches[2] then
|
||||||
local text = banhammer:ban_user(user_id, chat_id, self)
|
local text = banhammer:ban_user(user_id, chat_id)
|
||||||
utilities.send_reply(self, msg, text)
|
utilities.send_reply(msg, text)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
if matches[2] == 'delete' then
|
if matches[2] == 'delete' then
|
||||||
local text = banhammer:unban_user(user_id, chat_id, self, msg.chat.type)
|
local text = banhammer:unban_user(user_id, chat_id, msg.chat.type)
|
||||||
utilities.send_reply(self, msg, text)
|
utilities.send_reply(msg, text)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
utilities.send_reply(self, msg, 'Das ist keine Chat-Gruppe')
|
utilities.send_reply(msg, 'Das ist keine Chat-Gruppe')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -235,10 +235,10 @@ function banhammer:action(msg, config, matches)
|
|||||||
user_id = msg.reply_to_message.from.id
|
user_id = msg.reply_to_message.from.id
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
banhammer:kick_user(user_id, msg.chat.id, self, true)
|
banhammer:kick_user(user_id, msg.chat.id, true)
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
utilities.send_reply(self, msg, 'Das ist keine Chat-Gruppe')
|
utilities.send_reply(msg, 'Das ist keine Chat-Gruppe')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -247,14 +247,14 @@ function banhammer:action(msg, config, matches)
|
|||||||
if matches[2] == 'enable' then
|
if matches[2] == 'enable' then
|
||||||
local hash = 'whitelist:enabled'
|
local hash = 'whitelist:enabled'
|
||||||
redis:set(hash, true)
|
redis:set(hash, true)
|
||||||
utilities.send_reply(self, msg, 'Whitelist aktiviert')
|
utilities.send_reply(msg, 'Whitelist aktiviert')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if matches[2] == 'disable' then
|
if matches[2] == 'disable' then
|
||||||
local hash = 'whitelist:enabled'
|
local hash = 'whitelist:enabled'
|
||||||
redis:del(hash)
|
redis:del(hash)
|
||||||
utilities.send_reply(self, msg, 'Whitelist deaktiviert')
|
utilities.send_reply(msg, 'Whitelist deaktiviert')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -269,7 +269,7 @@ function banhammer:action(msg, config, matches)
|
|||||||
end
|
end
|
||||||
local hash = 'whitelist:user#id'..user_id
|
local hash = 'whitelist:user#id'..user_id
|
||||||
redis:set(hash, true)
|
redis:set(hash, true)
|
||||||
utilities.send_reply(self, msg, 'User '..user_id..' whitelisted')
|
utilities.send_reply(msg, 'User '..user_id..' whitelisted')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -286,14 +286,14 @@ function banhammer:action(msg, config, matches)
|
|||||||
end
|
end
|
||||||
local hash = 'whitelist:user#id'..user_id
|
local hash = 'whitelist:user#id'..user_id
|
||||||
redis:del(hash)
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if matches[2] == 'user' then
|
if matches[2] == 'user' then
|
||||||
local hash = 'whitelist:user#id'..matches[3]
|
local hash = 'whitelist:user#id'..matches[3]
|
||||||
redis:set(hash, true)
|
redis:set(hash, true)
|
||||||
utilities.send_reply(self, msg, 'User '..matches[3]..' whitelisted')
|
utilities.send_reply(msg, 'User '..matches[3]..' whitelisted')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -301,10 +301,10 @@ function banhammer:action(msg, config, matches)
|
|||||||
if msg.chat.type == 'group' or msg.chat.type == 'supergroup' then
|
if msg.chat.type == 'group' or msg.chat.type == 'supergroup' then
|
||||||
local hash = 'whitelist:chat#id'..msg.chat.id
|
local hash = 'whitelist:chat#id'..msg.chat.id
|
||||||
redis:set(hash, true)
|
redis:set(hash, true)
|
||||||
utilities.send_reply(self, msg, 'Chat '..msg.chat.id..' whitelisted')
|
utilities.send_reply(msg, 'Chat '..msg.chat.id..' whitelisted')
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
utilities.send_reply(self, msg, 'Das ist keine Chat-Gruppe!')
|
utilities.send_reply(msg, 'Das ist keine Chat-Gruppe!')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -312,7 +312,7 @@ function banhammer:action(msg, config, matches)
|
|||||||
if matches[2] == 'delete' and matches[3] == 'user' then
|
if matches[2] == 'delete' and matches[3] == 'user' then
|
||||||
local hash = 'whitelist:user#id'..matches[4]
|
local hash = 'whitelist:user#id'..matches[4]
|
||||||
redis:del(hash)
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -320,10 +320,10 @@ function banhammer:action(msg, config, matches)
|
|||||||
if msg.chat.type == 'group' or msg.chat.type == 'supergroup' then
|
if msg.chat.type == 'group' or msg.chat.type == 'supergroup' then
|
||||||
local hash = 'whitelist:chat#id'..msg.chat.id
|
local hash = 'whitelist:chat#id'..msg.chat.id
|
||||||
redis:del(hash)
|
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
|
return
|
||||||
else
|
else
|
||||||
utilities.send_reply(self, msg, 'Das ist keine Chat-Gruppe!')
|
utilities.send_reply(msg, 'Das ist keine Chat-Gruppe!')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -334,14 +334,14 @@ function banhammer:action(msg, config, matches)
|
|||||||
if matches[2] == 'user' and matches[3] then
|
if matches[2] == 'user' and matches[3] then
|
||||||
local hash = 'blocked:'..matches[3]
|
local hash = 'blocked:'..matches[3]
|
||||||
redis:set(hash, true)
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if matches[2] == 'delete' and matches[3] then
|
if matches[2] == 'delete' and matches[3] then
|
||||||
local hash = 'blocked:'..matches[3]
|
local hash = 'blocked:'..matches[3]
|
||||||
redis:del(hash)
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -358,7 +358,7 @@ function banhammer:action(msg, config, matches)
|
|||||||
end
|
end
|
||||||
local hash = 'blocked:'..user_id
|
local hash = 'blocked:'..user_id
|
||||||
redis:set(hash, true)
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -375,7 +375,7 @@ function banhammer:action(msg, config, matches)
|
|||||||
end
|
end
|
||||||
local hash = 'blocked:'..user_id
|
local hash = 'blocked:'..user_id
|
||||||
redis:del(hash)
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -38,10 +38,10 @@ function bitly:inline_callback(inline_query, config, matches)
|
|||||||
url = data.long_url
|
url = data.long_url
|
||||||
end
|
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..'"}}]'
|
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
|
end
|
||||||
|
|
||||||
function bitly:action(msg, config, matches)
|
function bitly:action(msg, config, matches)
|
||||||
@ -50,14 +50,14 @@ function bitly:action(msg, config, matches)
|
|||||||
if redis:exists(hash) == false then
|
if redis:exists(hash) == false then
|
||||||
local longurl = bitly:expand_bitly_link(shorturl)
|
local longurl = bitly:expand_bitly_link(shorturl)
|
||||||
if not longurl then
|
if not longurl then
|
||||||
utilities.send_reply(self, msg, config.errors.connection)
|
utilities.send_reply( msg, config.errors.connection)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
utilities.send_reply(self, msg, longurl)
|
utilities.send_reply(msg, longurl)
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
local data = redis:hgetall(hash)
|
local data = redis:hgetall(hash)
|
||||||
utilities.send_reply(self, msg, data.long_url)
|
utilities.send_reply(msg, data.long_url)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -83,38 +83,38 @@ function bitly_create:action(msg, config, matches)
|
|||||||
bitly_access_token = redis:hget(hash, 'bitly')
|
bitly_access_token = redis:hget(hash, 'bitly')
|
||||||
|
|
||||||
if matches[1] == 'auth' and matches[2] then
|
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')
|
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')
|
redis:hdel(hash, 'bitly_login_msg')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if matches[1] == 'auth' then
|
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)
|
redis:hset(hash, 'bitly_login_msg', result.result.message_id)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if matches[1] == 'unauth' and bitly_access_token then
|
if matches[1] == 'unauth' and bitly_access_token then
|
||||||
redis:hdel(hash, 'bitly')
|
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
|
return
|
||||||
elseif matches[1] == 'unauth' and not bitly_access_token then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if matches[1] == 'me' and bitly_access_token then
|
if matches[1] == 'me' and bitly_access_token then
|
||||||
local text = bitly_create:get_bitly_user_info(bitly_access_token)
|
local text = bitly_create:get_bitly_user_info(bitly_access_token)
|
||||||
if text then
|
if text then
|
||||||
utilities.send_reply(self, msg, text, true)
|
utilities.send_reply(msg, text, true)
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
elseif matches[1] == 'me' and not bitly_access_token then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -130,7 +130,7 @@ function bitly_create:action(msg, config, matches)
|
|||||||
long_url = url_encode(matches[2])
|
long_url = url_encode(matches[2])
|
||||||
domain = matches[1]
|
domain = matches[1]
|
||||||
end
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -35,11 +35,11 @@ function br:action(msg, config, matches)
|
|||||||
local article = URL.escape(matches[1])
|
local article = URL.escape(matches[1])
|
||||||
local text, image_url = br:get_br_article(article)
|
local text, image_url = br:get_br_article(article)
|
||||||
if image_url then
|
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')
|
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
|
end
|
||||||
utilities.send_reply(self, msg, text, true)
|
utilities.send_reply(msg, text, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
return br
|
return br
|
@ -28,7 +28,7 @@ end
|
|||||||
|
|
||||||
|
|
||||||
function btc:action(msg, config, matches)
|
function btc:action(msg, config, matches)
|
||||||
utilities.send_reply(self, msg, btc:getBTCX(cur), true)
|
utilities.send_reply(msg, btc:getBTCX(cur), true)
|
||||||
end
|
end
|
||||||
|
|
||||||
return btc
|
return btc
|
@ -29,7 +29,7 @@ function calc:mathjs(exp)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function calc:action(msg, config, matches)
|
function calc:action(msg, config, matches)
|
||||||
utilities.send_reply(self, msg, calc:mathjs(matches[1]))
|
utilities.send_reply(msg, calc:mathjs(matches[1]))
|
||||||
end
|
end
|
||||||
|
|
||||||
return calc
|
return calc
|
||||||
|
@ -56,18 +56,18 @@ function cats:inline_callback(inline_query, config, matches)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
local results = results..']'
|
local results = results..']'
|
||||||
utilities.answer_inline_query(self, inline_query, results, 30)
|
utilities.answer_inline_query(inline_query, results, 30)
|
||||||
end
|
end
|
||||||
|
|
||||||
function cats:action(msg, config)
|
function cats:action(msg, config)
|
||||||
if matches[1] == 'gif' then
|
if matches[1] == 'gif' then
|
||||||
local url = 'http://thecatapi.com/api/images/get?type=gif&apikey='..apikey
|
local url = 'http://thecatapi.com/api/images/get?type=gif&apikey='..apikey
|
||||||
local file = download_to_file(url, 'miau.gif')
|
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
|
else
|
||||||
local url = 'http://thecatapi.com/api/images/get?type=jpg,png&apikey='..apikey
|
local url = 'http://thecatapi.com/api/images/get?type=jpg,png&apikey='..apikey
|
||||||
local file = download_to_file(url, 'miau.png')
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ function channel:action(msg, config)
|
|||||||
local input = utilities.input(msg.text)
|
local input = utilities.input(msg.text)
|
||||||
local output
|
local output
|
||||||
local chat_id = '@'..matches[1]
|
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
|
if admin_list then
|
||||||
local is_admin = false
|
local is_admin = false
|
||||||
@ -39,17 +39,17 @@ function channel:action(msg, config)
|
|||||||
-- this plugin will also be ready :P
|
-- this plugin will also be ready :P
|
||||||
-- Also, URL buttons work!? Maybe beta?
|
-- Also, URL buttons work!? Maybe beta?
|
||||||
if reply_markup:match('"callback_data":"') then
|
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
|
return
|
||||||
elseif reply_markup:match('"switch_inline_query":"') then
|
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
|
return
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
text = matches[2]
|
text = matches[2]
|
||||||
reply_markup = nil
|
reply_markup = nil
|
||||||
end
|
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
|
if success then
|
||||||
output = 'Deine Nachricht wurde versendet!'
|
output = 'Deine Nachricht wurde versendet!'
|
||||||
else
|
else
|
||||||
@ -61,7 +61,7 @@ function channel:action(msg, config)
|
|||||||
else
|
else
|
||||||
output = 'Sorry, ich konnte die Administratorenliste nicht abrufen!\n`'..gca_results.description..'`'
|
output = 'Sorry, ich konnte die Administratorenliste nicht abrufen!\n`'..gca_results.description..'`'
|
||||||
end
|
end
|
||||||
utilities.send_reply(self, msg, output, true)
|
utilities.send_reply(msg, output, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
return channel
|
return channel
|
||||||
|
@ -47,7 +47,7 @@ function channels:disable_channel(msg)
|
|||||||
end
|
end
|
||||||
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 can reeanble the channel
|
||||||
if is_sudo(msg, config) then
|
if is_sudo(msg, config) then
|
||||||
if msg.text == "/channel enable" 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
|
if channels:is_channel_disabled(msg) then
|
||||||
print('Channel wurde deaktiviert')
|
print('Channel wurde deaktiviert')
|
||||||
msg.text = ''
|
return
|
||||||
msg.text_lower = ''
|
|
||||||
msg.entities = ''
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return msg
|
return msg
|
||||||
@ -67,18 +65,18 @@ end
|
|||||||
|
|
||||||
function channels:action(msg, config, matches)
|
function channels:action(msg, config, matches)
|
||||||
if msg.from.id ~= config.admin then
|
if msg.from.id ~= config.admin then
|
||||||
utilities.send_reply(self, msg, config.errors.sudo)
|
utilities.send_reply(msg, config.errors.sudo)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Enable a channel
|
-- Enable a channel
|
||||||
if matches[1] == 'enable' then
|
if matches[1] == 'enable' then
|
||||||
utilities.send_reply(self, msg, channels:enable_channel(msg))
|
utilities.send_reply(msg, channels:enable_channel(msg))
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
-- Disable a channel
|
-- Disable a channel
|
||||||
if matches[1] == 'disable' then
|
if matches[1] == 'disable' then
|
||||||
utilities.send_reply(self, msg, channels:disable_channel(msg))
|
utilities.send_reply(msg, channels:disable_channel(msg))
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -11,17 +11,17 @@ end
|
|||||||
cleverbot.command = 'cbot <Text>'
|
cleverbot.command = 'cbot <Text>'
|
||||||
|
|
||||||
function cleverbot:action(msg, config, matches)
|
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 text = matches[1]
|
||||||
local query, code = https.request(cleverbot.url..URL.escape(text))
|
local query, code = https.request(cleverbot.url..URL.escape(text))
|
||||||
if code ~= 200 then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local data = json.decode(query)
|
local data = json.decode(query)
|
||||||
if not data.clever then
|
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
|
return
|
||||||
end
|
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, "ü", "ü")
|
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
|
end
|
||||||
|
|
||||||
return cleverbot
|
return cleverbot
|
@ -19,10 +19,10 @@ function clypit:get_clypit_details(shortcode)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function clypit:action(msg, config, matches)
|
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])
|
local audio, title, duration = clypit:get_clypit_details(matches[1])
|
||||||
if not audio then return utilities.send_reply(self, msg, config.errors.connection) end
|
if not audio then return utilities.send_reply(msg, config.errors.connection) end
|
||||||
utilities.send_audio(self, msg.chat.id, audio, nil, msg.message_id, duration, nil, title)
|
utilities.send_audio(msg.chat.id, audio, nil, msg.message_id, duration, nil, title)
|
||||||
end
|
end
|
||||||
|
|
||||||
return clypit
|
return clypit
|
||||||
|
@ -31,22 +31,22 @@ function control:action(msg, config)
|
|||||||
config[k] = v
|
config[k] = v
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
bot.init(self, config)
|
bot.init(config)
|
||||||
utilities.send_reply(self, msg, 'Bot neu gestartet!')
|
utilities.send_reply(msg, 'Bot neu gestartet!')
|
||||||
elseif msg.text_lower:match('^'..cmd_pat..'halt') then
|
elseif msg.text_lower:match('^'..cmd_pat..'halt') then
|
||||||
self.is_started = false
|
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
|
elseif msg.text_lower:match('^'..cmd_pat..'script') then
|
||||||
local input = msg.text_lower:match('^'..cmd_pat..'script\n(.+)')
|
local input = msg.text_lower:match('^'..cmd_pat..'script\n(.+)')
|
||||||
if not input then
|
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
|
return
|
||||||
end
|
end
|
||||||
input = input .. '\n'
|
input = input .. '\n'
|
||||||
for command in input:gmatch('(.-)\n') do
|
for command in input:gmatch('(.-)\n') do
|
||||||
command = utilities.trim(command)
|
command = utilities.trim(command)
|
||||||
msg.text = command
|
msg.text = command
|
||||||
bot.on_msg_receive(self, msg, config)
|
bot.on_msg_receive(msg, config)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -90,31 +90,31 @@ end
|
|||||||
function creds_manager:action(msg, config, matches)
|
function creds_manager:action(msg, config, matches)
|
||||||
local receiver = msg.from.id
|
local receiver = msg.from.id
|
||||||
if receiver ~= config.admin then
|
if receiver ~= config.admin then
|
||||||
utilities.send_reply(self, msg, config.errors.sudo)
|
utilities.send_reply(msg, config.errors.sudo)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if msg.chat.type ~= 'private' then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if matches[1] == "/creds" then
|
if matches[1] == "/creds" then
|
||||||
utilities.send_reply(self, msg, creds_manager:list_creds())
|
utilities.send_reply(msg, creds_manager:list_creds())
|
||||||
return
|
return
|
||||||
elseif matches[1] == "/creds add" then
|
elseif matches[1] == "/creds add" then
|
||||||
local var = string.lower(string.sub(matches[2], 1, 50))
|
local var = string.lower(string.sub(matches[2], 1, 50))
|
||||||
local key = string.sub(matches[3], 1, 1000)
|
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
|
return
|
||||||
elseif matches[1] == "/creds del" then
|
elseif matches[1] == "/creds del" then
|
||||||
local var = string.lower(matches[2])
|
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
|
return
|
||||||
elseif matches[1] == "/creds rename" then
|
elseif matches[1] == "/creds rename" then
|
||||||
local var = string.lower(string.sub(matches[2], 1, 50))
|
local var = string.lower(string.sub(matches[2], 1, 50))
|
||||||
local newvar = string.lower(string.sub(matches[3], 1, 1000))
|
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
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -39,7 +39,7 @@ function currency:inline_callback(inline_query, config, matches)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local value, iserr = currency:convert_money(base, to, amount)
|
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..'*'
|
local output = amount..' '..base..' = *'..value..' '..to..'*'
|
||||||
if tonumber(amount) == 1 then
|
if tonumber(amount) == 1 then
|
||||||
@ -48,7 +48,7 @@ function currency:inline_callback(inline_query, config, matches)
|
|||||||
title = amount..' '..base..' entsprechen'
|
title = amount..' '..base..' entsprechen'
|
||||||
end
|
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"}}]'
|
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
|
end
|
||||||
|
|
||||||
function currency:convert_money(base, to, amount)
|
function currency:convert_money(base, to, amount)
|
||||||
@ -83,7 +83,7 @@ end
|
|||||||
|
|
||||||
function currency:action(msg, config, matches)
|
function currency:action(msg, config, matches)
|
||||||
if matches[1] == '/cash' then
|
if matches[1] == '/cash' then
|
||||||
utilities.send_reply(self, msg, currency.doc, true)
|
utilities.send_reply(msg, currency.doc, true)
|
||||||
return
|
return
|
||||||
elseif not matches[2] then -- first pattern
|
elseif not matches[2] then -- first pattern
|
||||||
base = 'EUR'
|
base = 'EUR'
|
||||||
@ -100,24 +100,24 @@ function currency:action(msg, config, matches)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if from == to then
|
if from == to then
|
||||||
utilities.send_reply(self, msg, 'Jaja, sehr witzig...')
|
utilities.send_reply(msg, 'Jaja, sehr witzig...')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local value = currency:convert_money(base, to, amount)
|
local value = currency:convert_money(base, to, amount)
|
||||||
if value == 'NOCONNECT' then
|
if value == 'NOCONNECT' then
|
||||||
utilities.send_reply(self, msg, config.errors.connection)
|
utilities.send_reply(msg, config.errors.connection)
|
||||||
return
|
return
|
||||||
elseif value == 'WRONGBASE' then
|
elseif value == 'WRONGBASE' then
|
||||||
utilities.send_reply(self, msg, 'Keine gültige Basiswährung.')
|
utilities.send_reply(msg, 'Keine gültige Basiswährung.')
|
||||||
return
|
return
|
||||||
elseif value == 'WRONGCONVERTRATE' then
|
elseif value == 'WRONGCONVERTRATE' then
|
||||||
utilities.send_reply(self, msg, 'Keine gültige Umwandlungswährung.')
|
utilities.send_reply(msg, 'Keine gültige Umwandlungswährung.')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local output = amount..' '..base..' = *'..value..' '..to..'*'
|
local output = amount..' '..base..' = *'..value..' '..to..'*'
|
||||||
utilities.send_reply(self, msg, output, true)
|
utilities.send_reply(msg, output, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
return currency
|
return currency
|
@ -20,8 +20,8 @@ end
|
|||||||
|
|
||||||
function dailymotion:action(msg, config, matches)
|
function dailymotion:action(msg, config, matches)
|
||||||
local text = dailymotion:send_dailymotion_info(matches[1])
|
local text = dailymotion:send_dailymotion_info(matches[1])
|
||||||
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
|
end
|
||||||
|
|
||||||
return dailymotion
|
return dailymotion
|
||||||
|
@ -34,13 +34,13 @@ end
|
|||||||
|
|
||||||
function deviantart:action(msg, config, matches)
|
function deviantart:action(msg, config, matches)
|
||||||
local data = deviantart:get_da_data('http://'..matches[1]..'.deviantart.com/art/'..matches[2])
|
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)
|
local text, file = deviantart:send_da_data(data)
|
||||||
if file then
|
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
|
else
|
||||||
utilities.send_reply(self, msg, text)
|
utilities.send_reply(msg, text)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -28,7 +28,7 @@ end
|
|||||||
function dhl:action(msg, config, matches)
|
function dhl:action(msg, config, matches)
|
||||||
local sendungs_id = matches[1]
|
local sendungs_id = matches[1]
|
||||||
if string.len(sendungs_id) < 8 then return end
|
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
|
end
|
||||||
|
|
||||||
return dhl
|
return dhl
|
||||||
|
@ -14,17 +14,17 @@ function dropbox:action(msg, config, matches)
|
|||||||
local v,code = https.request(link)
|
local v,code = https.request(link)
|
||||||
if code == 200 then
|
if code == 200 then
|
||||||
if string.ends(link, ".png") or string.ends(link, ".jpe?g")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)
|
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
|
return
|
||||||
elseif string.ends(link, ".webp") or string.ends(link, ".gif") then
|
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)
|
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
|
return
|
||||||
else
|
else
|
||||||
utilities.send_reply(self, msg, link)
|
utilities.send_reply(msg, link)
|
||||||
end
|
end
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
|
@ -22,18 +22,18 @@ function echo:inline_callback(inline_query, config, matches)
|
|||||||
end
|
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"}}]'
|
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
|
end
|
||||||
|
|
||||||
function echo:action(msg)
|
function echo:action(msg)
|
||||||
local input = utilities.input_from_msg(msg)
|
local input = utilities.input_from_msg(msg)
|
||||||
if not input then
|
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
|
else
|
||||||
local output
|
local output
|
||||||
if msg.chat.type == 'supergroup' then
|
if msg.chat.type == 'supergroup' then
|
||||||
output = '*Echo:*\n"' .. utilities.md_escape(input) .. '"'
|
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
|
return
|
||||||
elseif msg.chat.type == 'group' then
|
elseif msg.chat.type == 'group' then
|
||||||
local b = 1
|
local b = 1
|
||||||
@ -42,7 +42,7 @@ function echo:action(msg)
|
|||||||
input,b = input:gsub('^/+','')
|
input,b = input:gsub('^/+','')
|
||||||
end
|
end
|
||||||
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ function expand:inline_callback(inline_query, config, matches)
|
|||||||
end
|
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..'"}}]'
|
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
|
end
|
||||||
|
|
||||||
function expand:url(long_url)
|
function expand:url(long_url)
|
||||||
@ -47,10 +47,10 @@ end
|
|||||||
function expand:action(msg, config, matches)
|
function expand:action(msg, config, matches)
|
||||||
local ok, response_headers = expand:url(matches[1])
|
local ok, response_headers = expand:url(matches[1])
|
||||||
if ok and response_headers.location then
|
if ok and response_headers.location then
|
||||||
utilities.send_reply(self, msg, response_headers.location)
|
utilities.send_reply(msg, response_headers.location)
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
utilities.send_reply(self, msg, "Fehler beim Erweitern der URL.")
|
utilities.send_reply(msg, "Fehler beim Erweitern der URL.")
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -136,7 +136,7 @@ function facebook:action(msg, config, matches)
|
|||||||
else
|
else
|
||||||
id = matches[4]
|
id = matches[4]
|
||||||
end
|
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
|
return
|
||||||
elseif matches[1] == 'photo' or matches[2] == 'photos' then
|
elseif matches[1] == 'photo' or matches[2] == 'photos' then
|
||||||
if not matches[4] then
|
if not matches[4] then
|
||||||
@ -146,10 +146,10 @@ function facebook:action(msg, config, matches)
|
|||||||
end
|
end
|
||||||
local text, image_url = facebook:send_facebook_photo(photo_id, receiver)
|
local text, image_url = facebook:send_facebook_photo(photo_id, receiver)
|
||||||
if not image_url then return end
|
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')
|
local file = download_to_file(image_url, 'photo.jpg')
|
||||||
utilities.send_reply(self, msg, text, 'HTML')
|
utilities.send_reply(msg, text, 'HTML')
|
||||||
utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
|
utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
|
||||||
return
|
return
|
||||||
elseif matches[1] == 'video' or matches[2] == 'videos' then
|
elseif matches[1] == 'video' or matches[2] == 'videos' then
|
||||||
if not matches[3] then
|
if not matches[3] then
|
||||||
@ -164,10 +164,10 @@ function facebook:action(msg, config, matches)
|
|||||||
title = 'VIDEO: '..title
|
title = 'VIDEO: '..title
|
||||||
end
|
end
|
||||||
if not video_url then return 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
|
return
|
||||||
else
|
else
|
||||||
utilities.send_reply(self, msg, facebook:facebook_info(matches[1]), 'HTML')
|
utilities.send_reply(msg, facebook:facebook_info(matches[1]), 'HTML')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -26,7 +26,7 @@ function fefe:post(id)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function fefe:action(msg, config, matches)
|
function fefe:action(msg, config, matches)
|
||||||
utilities.send_reply(self, msg, fefe:post(matches[1]))
|
utilities.send_reply(msg, fefe:post(matches[1]))
|
||||||
end
|
end
|
||||||
|
|
||||||
return fefe
|
return fefe
|
||||||
|
@ -49,21 +49,21 @@ end
|
|||||||
|
|
||||||
function flickr:action(msg, config, matches)
|
function flickr:action(msg, config, matches)
|
||||||
local data = flickr:get_flickr_photo_data(matches[2])
|
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)
|
local text, image_url, isgif = flickr:send_flickr_photo_data(data)
|
||||||
|
|
||||||
if image_url then
|
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)
|
local file = download_to_file(image_url)
|
||||||
if isgif then
|
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
|
return
|
||||||
else
|
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
|
return
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
utilities.send_reply(self, msg, text)
|
utilities.send_reply(msg, text)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -32,15 +32,15 @@ end
|
|||||||
|
|
||||||
function flickr_search:action(msg, config, matches)
|
function flickr_search:action(msg, config, matches)
|
||||||
local url = flickr_search:get_flickr(matches[1])
|
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)
|
local file = download_to_file(url)
|
||||||
|
|
||||||
if string.ends(url, ".gif") then
|
if string.ends(url, ".gif") then
|
||||||
utilities.send_document(self, msg.chat.id, file, url)
|
utilities.send_document(msg.chat.id, file, url)
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
utilities.send_photo(self, msg.chat.id, file, url)
|
utilities.send_photo(msg.chat.id, file, url)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -217,17 +217,17 @@ function forecast:inline_callback(inline_query, config, matches)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local lat, lng = get_city_coordinates(city, config)
|
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
|
if matches[1] == 'f' then
|
||||||
title, description, text, ttl = forecast:get_forecast(lat, lng, true)
|
title, description, text, ttl = forecast:get_forecast(lat, lng, true)
|
||||||
else
|
else
|
||||||
title, description, text, ttl = forecast:get_forecast_hourly(lat, lng, true)
|
title, description, text, ttl = forecast:get_forecast_hourly(lat, lng, true)
|
||||||
end
|
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 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"}}]'
|
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
|
end
|
||||||
|
|
||||||
function forecast:action(msg, config, matches)
|
function forecast:action(msg, config, matches)
|
||||||
@ -246,7 +246,7 @@ function forecast:action(msg, config, matches)
|
|||||||
|
|
||||||
local lat, lng = get_city_coordinates(city, config)
|
local lat, lng = get_city_coordinates(city, config)
|
||||||
if not lat and not lng then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -258,7 +258,7 @@ function forecast:action(msg, config, matches)
|
|||||||
if not text then
|
if not text then
|
||||||
text = '*Konnte die Wettervorhersage für diese Stadt nicht bekommen.*'
|
text = '*Konnte die Wettervorhersage für diese Stadt nicht bekommen.*'
|
||||||
end
|
end
|
||||||
utilities.send_reply(self, msg, text, true)
|
utilities.send_reply(msg, text, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
return forecast
|
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 :\
|
-- Yes, the callback is copied from below, but I can't think of another method :\
|
||||||
function gImages:callback(callback, msg, self, config, input)
|
function gImages:callback(callback, msg, self, config, input)
|
||||||
if not msg then return end
|
if not msg then return end
|
||||||
utilities.answer_callback_query(self, callback, 'Suche nochmal nach "'..URL.unescape(input)..'"')
|
utilities.answer_callback_query(callback, 'Suche nochmal nach "'..URL.unescape(input)..'"')
|
||||||
utilities.send_typing(self, msg.chat.id, 'upload_photo')
|
utilities.send_typing(msg.chat.id, 'upload_photo')
|
||||||
local hash = 'telegram:cache:gImages'
|
local hash = 'telegram:cache:gImages'
|
||||||
local results = redis:smembers(hash..':'..string.lower(URL.unescape(input)))
|
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')
|
print('doing web request')
|
||||||
results = gImages:get_image(input)
|
results = gImages:get_image(input)
|
||||||
if results == 403 then
|
if results == 403 then
|
||||||
utilities.send_reply(self, msg, config.errors.quotaexceeded, true)
|
utilities.send_reply(msg, config.errors.quotaexceeded, true)
|
||||||
return
|
return
|
||||||
elseif not results then
|
elseif not results then
|
||||||
utilities.send_reply(self, msg, config.errors.results, true)
|
utilities.send_reply(msg, config.errors.results, true)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
gImages:cache_result(results, input)
|
gImages:cache_result(results, input)
|
||||||
@ -86,18 +86,18 @@ function gImages:callback(callback, msg, self, config, input)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if failed then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if mimetype == 'image/gif' then
|
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
|
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
|
end
|
||||||
|
|
||||||
if not result then
|
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
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -144,18 +144,18 @@ function gImages:action(msg, config, matches)
|
|||||||
if msg.reply_to_message and msg.reply_to_message.text then
|
if msg.reply_to_message and msg.reply_to_message.text then
|
||||||
input = msg.reply_to_message.text
|
input = msg.reply_to_message.text
|
||||||
else
|
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
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
print ('Checking if search contains blacklisted word: '..input)
|
print ('Checking if search contains blacklisted word: '..input)
|
||||||
if is_blacklisted(input) then
|
if is_blacklisted(input) then
|
||||||
utilities.send_reply(self, msg, 'Vergiss es! ._.')
|
utilities.send_reply(msg, 'Vergiss es! ._.')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
utilities.send_typing(self, msg.chat.id, 'upload_photo')
|
utilities.send_typing(msg.chat.id, 'upload_photo')
|
||||||
|
|
||||||
local hash = 'telegram:cache:gImages'
|
local hash = 'telegram:cache:gImages'
|
||||||
local results = redis:smembers(hash..':'..string.lower(input))
|
local results = redis:smembers(hash..':'..string.lower(input))
|
||||||
@ -164,10 +164,10 @@ function gImages:action(msg, config, matches)
|
|||||||
print('doing web request')
|
print('doing web request')
|
||||||
results = gImages:get_image(URL.escape(input))
|
results = gImages:get_image(URL.escape(input))
|
||||||
if results == 403 then
|
if results == 403 then
|
||||||
utilities.send_reply(self, msg, config.errors.quotaexceeded, true)
|
utilities.send_reply(msg, config.errors.quotaexceeded, true)
|
||||||
return
|
return
|
||||||
elseif not results or results == 'NORESULTS' then
|
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
|
return
|
||||||
end
|
end
|
||||||
gImages:cache_result(results, input)
|
gImages:cache_result(results, input)
|
||||||
@ -215,18 +215,18 @@ function gImages:action(msg, config, matches)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if failed then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if mimetype == 'image/gif' then
|
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
|
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
|
end
|
||||||
|
|
||||||
if not result then
|
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
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -22,29 +22,29 @@ end
|
|||||||
function gMaps:inline_callback(inline_query, config, matches)
|
function gMaps:inline_callback(inline_query, config, matches)
|
||||||
local place = matches[1]
|
local place = matches[1]
|
||||||
local coords = utilities.get_coords(place, config)
|
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..'"}]'
|
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
|
end
|
||||||
|
|
||||||
function gMaps:action(msg, config)
|
function gMaps:action(msg, config)
|
||||||
local input = utilities.input_from_msg(msg)
|
local input = utilities.input_from_msg(msg)
|
||||||
if not input then
|
if not input then
|
||||||
utilities.send_reply(self, msg, gMaps.doc, true)
|
utilities.send_reply(msg, gMaps.doc, true)
|
||||||
return
|
return
|
||||||
end
|
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)
|
local coords = utilities.get_coords(input, config)
|
||||||
if type(coords) == 'string' then
|
if type(coords) == 'string' then
|
||||||
utilities.send_reply(self, msg, coords)
|
utilities.send_reply(msg, coords)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
utilities.send_location(self, msg.chat.id, coords.lat, coords.lon, msg.message_id)
|
utilities.send_location(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_photo(msg.chat.id, gMaps:get_staticmap(input, coords.lat, coords.lon), nil, msg.message_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
return gMaps
|
return gMaps
|
||||||
|
@ -23,7 +23,7 @@ function gSearch:googlethat(query, config)
|
|||||||
return '403'
|
return '403'
|
||||||
end
|
end
|
||||||
if code ~= 200 then
|
if code ~= 200 then
|
||||||
utilities.send_reply(self, msg, config.errors.connection)
|
utilities.send_reply(msg, config.errors.connection)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local data = json.decode(res)
|
local data = json.decode(res)
|
||||||
@ -53,22 +53,22 @@ end
|
|||||||
function gSearch:action(msg, config)
|
function gSearch:action(msg, config)
|
||||||
local input = utilities.input_from_msg(msg)
|
local input = utilities.input_from_msg(msg)
|
||||||
if not input then
|
if not input then
|
||||||
utilities.send_reply(self, msg, gSearch.doc, true)
|
utilities.send_reply(msg, gSearch.doc, true)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local results, stats = gSearch:googlethat(input, onfig)
|
local results, stats = gSearch:googlethat(input, onfig)
|
||||||
if results == '403' then
|
if results == '403' then
|
||||||
utilities.send_reply(self, msg, config.errors.quotaexceeded)
|
utilities.send_reply(msg, config.errors.quotaexceeded)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if not results then
|
if not results then
|
||||||
utilities.send_reply(self, msg, config.errors.results)
|
utilities.send_reply(msg, config.errors.results)
|
||||||
return
|
return
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ function games:send_game_photo(result, self, msg)
|
|||||||
for k, v in pairs(images) do
|
for k, v in pairs(images) do
|
||||||
i = i+1
|
i = i+1
|
||||||
local file = download_to_file(v, 'game'..i..'.jpg')
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -117,10 +117,10 @@ function games:send_game_data(game_id, self, msg)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local text = '*'..title..'* für *'..platform..'*'..date..desc..genre..players..video..publisher
|
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
|
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)
|
games:send_game_photo(result, self, msg)
|
||||||
end
|
end
|
||||||
return
|
return
|
||||||
@ -133,14 +133,14 @@ function games:action(msg, config)
|
|||||||
if msg.reply_to_message and msg.reply_to_message.text then
|
if msg.reply_to_message and msg.reply_to_message.text then
|
||||||
game = msg.reply_to_message.text
|
game = msg.reply_to_message.text
|
||||||
else
|
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
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local game_id = games:get_game_id(game)
|
local game_id = games:get_game_id(game)
|
||||||
if not game_id then
|
if not game_id then
|
||||||
utilities.send_reply(self, msg, 'Spiel nicht gefunden!')
|
utilities.send_reply(msg, 'Spiel nicht gefunden!')
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
games:send_game_data(game_id, self, msg)
|
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('google') then -- if document is Google document (like a Spreadsheet)
|
||||||
if mimetype:match('drawing') then -- Drawing
|
if mimetype:match('drawing') then -- Drawing
|
||||||
local image_url = BASE_URL..'/files/'..id..'/export?key='..apikey..'&mimeType=image/png'
|
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')
|
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
|
return
|
||||||
else
|
else
|
||||||
local pdf_url = BASE_URL..'/files/'..id..'/export?key='..apikey..'&mimeType=application/pdf'
|
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')
|
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
|
return
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@ -65,19 +65,19 @@ function gdrive:send_drive_document_data(data, self, msg)
|
|||||||
local headers = response[3]
|
local headers = response[3]
|
||||||
local file_url = headers.location
|
local file_url = headers.location
|
||||||
if ext == "jpg" or ext == "jpeg" or ext == "png" then
|
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)
|
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
|
return
|
||||||
else
|
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)
|
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
|
return
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
local text = '*'..title..'*, freigegeben von _'..owner..'_'
|
local text = '*'..title..'*, freigegeben von _'..owner..'_'
|
||||||
utilities.send_reply(self, msg, text, true, keyboard)
|
utilities.send_reply(msg, text, true, keyboard)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -86,7 +86,7 @@ end
|
|||||||
function gdrive:action(msg, config, matches)
|
function gdrive:action(msg, config, matches)
|
||||||
local docid = matches[2]
|
local docid = matches[2]
|
||||||
local data = gdrive:get_drive_document_data(docid)
|
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)
|
gdrive:send_drive_document_data(data, self, msg)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
@ -50,7 +50,7 @@ function get:action(msg)
|
|||||||
output = get:list_variables(msg)
|
output = get:list_variables(msg)
|
||||||
end
|
end
|
||||||
|
|
||||||
utilities.send_message(self, msg.chat.id, output, true, nil, true)
|
utilities.send_message(msg.chat.id, output, true, nil, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
return get
|
return get
|
||||||
|
@ -31,7 +31,7 @@ function media_download:download_to_file_permanently(url, save_dir, file_name)
|
|||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
function media_download:pre_process(msg, self, config)
|
function media_download:pre_process(msg, config)
|
||||||
if msg.photo then
|
if msg.photo then
|
||||||
local lv = #msg.photo -- find biggest photo, always the last value
|
local lv = #msg.photo -- find biggest photo, always the last value
|
||||||
file_id = msg.photo[lv].file_id
|
file_id = msg.photo[lv].file_id
|
||||||
@ -57,7 +57,7 @@ function media_download:pre_process(msg, self, config)
|
|||||||
|
|
||||||
if file_size > 19922944 then
|
if file_size > 19922944 then
|
||||||
print('File is over 20 MB - can\'t download :(')
|
print('File is over 20 MB - can\'t download :(')
|
||||||
return
|
return msg
|
||||||
end
|
end
|
||||||
|
|
||||||
local save_dir = config.getfile_path
|
local save_dir = config.getfile_path
|
||||||
@ -74,7 +74,7 @@ function media_download:pre_process(msg, self, config)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Saving file to the Telegram Cloud
|
-- Saving file to the Telegram Cloud
|
||||||
local request = bindings.request(self, 'getFile', {
|
local request = bindings.request('getFile', {
|
||||||
file_id = file_id
|
file_id = file_id
|
||||||
} )
|
} )
|
||||||
|
|
||||||
|
@ -6,26 +6,26 @@ gfycat.triggers = {
|
|||||||
"gfycat.com/([A-Za-z0-9-_-]+)"
|
"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 BASE_URL = "https://gfycat.com"
|
||||||
local url = BASE_URL..'/cajax/get/'..name
|
local url = BASE_URL..'/cajax/get/'..name
|
||||||
local res,code = https.request(url)
|
local res,code = https.request(url)
|
||||||
if code ~= 200 then return "HTTP-FEHLER" end
|
if code ~= 200 then return "HTTP-FEHLER" end
|
||||||
local data = json.decode(res).gfyItem
|
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)
|
local file = download_to_file(data.webmUrl)
|
||||||
if file == nil then
|
if file == nil then
|
||||||
send_reply(self, msg, 'Fehler beim Herunterladen von '..name)
|
send_reply(msg, 'Fehler beim Herunterladen von '..name)
|
||||||
return
|
return
|
||||||
else
|
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
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function gfycat:action(msg, config, matches)
|
function gfycat:action(msg, config, matches)
|
||||||
local name = matches[1]
|
local name = matches[1]
|
||||||
gfycat:send_gfycat_video(name, self, msg)
|
gfycat:send_gfycat_video(name, msg)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -30,8 +30,8 @@ function giphy:inline_callback(inline_query, config, matches)
|
|||||||
else
|
else
|
||||||
data = giphy:get_gifs(matches[2])
|
data = giphy:get_gifs(matches[2])
|
||||||
end
|
end
|
||||||
if not data 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 utilities.answer_inline_query(self, inline_query) return end
|
if not data[1] then abort_inline_query(inline_query) return end
|
||||||
local results = '['
|
local results = '['
|
||||||
local id = 450
|
local id = 450
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ function giphy:inline_callback(inline_query, config, matches)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
local results = results..']'
|
local results = results..']'
|
||||||
utilities.answer_inline_query(self, inline_query, results, 3600)
|
utilities.answer_inline_query(inline_query, results, 3600)
|
||||||
end
|
end
|
||||||
|
|
||||||
function giphy:action()
|
function giphy:action()
|
||||||
|
@ -63,7 +63,7 @@ function github:action(msg, config, matches)
|
|||||||
else
|
else
|
||||||
output = github:send_gh_commit_data(gh_code, gh_commit_sha, data)
|
output = github:send_gh_commit_data(gh_code, gh_commit_sha, data)
|
||||||
end
|
end
|
||||||
utilities.send_reply(self, msg, output, true)
|
utilities.send_reply(msg, output, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
return github
|
return github
|
@ -181,42 +181,42 @@ function gh_feed:action(msg, config, matches)
|
|||||||
-- For channels
|
-- For channels
|
||||||
if matches[1] == 'sub' and matches[2] and matches[3] then
|
if matches[1] == 'sub' and matches[2] and matches[3] then
|
||||||
if msg.from.id ~= config.admin then
|
if msg.from.id ~= config.admin then
|
||||||
utilities.send_reply(self, msg, config.errors.sudo)
|
utilities.send_reply(msg, config.errors.sudo)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local id = '@'..matches[3]
|
local id = '@'..matches[3]
|
||||||
local result = utilities.get_chat_info(self, id)
|
local result = utilities.get_chat_info(id)
|
||||||
if not result then
|
if not result then
|
||||||
utilities.send_reply(self, msg, 'Diesen Kanal gibt es nicht!')
|
utilities.send_reply(msg, 'Diesen Kanal gibt es nicht!')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local output = gh_feed:subscribe(id, matches[2])
|
local output = gh_feed:subscribe(id, matches[2])
|
||||||
utilities.send_reply(self, msg, output, true)
|
utilities.send_reply(msg, output, true)
|
||||||
return
|
return
|
||||||
elseif matches[1] == 'del' and matches[2] and matches[3] then
|
elseif matches[1] == 'del' and matches[2] and matches[3] then
|
||||||
if msg.from.id ~= config.admin then
|
if msg.from.id ~= config.admin then
|
||||||
utilities.send_reply(self, msg, config.errors.sudo)
|
utilities.send_reply(msg, config.errors.sudo)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local id = '@'..matches[3]
|
local id = '@'..matches[3]
|
||||||
local result = utilities.get_chat_info(self, id)
|
local result = utilities.get_chat_info(id)
|
||||||
if not result then
|
if not result then
|
||||||
utilities.send_reply(self, msg, 'Diesen Kanal gibt es nicht!')
|
utilities.send_reply(msg, 'Diesen Kanal gibt es nicht!')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local output = gh_feed:unsubscribe(id, matches[2])
|
local output = gh_feed:unsubscribe(id, matches[2])
|
||||||
utilities.send_reply(self, msg, output, true)
|
utilities.send_reply(msg, output, true)
|
||||||
return
|
return
|
||||||
elseif matches[1] == 'gh' and matches[2] then
|
elseif matches[1] == 'gh' and matches[2] then
|
||||||
local id = '@'..matches[2]
|
local id = '@'..matches[2]
|
||||||
local result = utilities.get_chat_info(self, id)
|
local result = utilities.get_chat_info(id)
|
||||||
if not result then
|
if not result then
|
||||||
utilities.send_reply(self, msg, 'Diesen Kanal gibt es nicht!')
|
utilities.send_reply(msg, 'Diesen Kanal gibt es nicht!')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local chat_name = result.result.title
|
local chat_name = result.result.title
|
||||||
local output = gh_feed:print_subs(id, chat_name)
|
local output = gh_feed:print_subs(id, chat_name)
|
||||||
utilities.send_reply(self, msg, output, true)
|
utilities.send_reply(msg, output, true)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -228,42 +228,39 @@ function gh_feed:action(msg, config, matches)
|
|||||||
|
|
||||||
if matches[1] == 'sub' and matches[2] then
|
if matches[1] == 'sub' and matches[2] then
|
||||||
if msg.from.id ~= config.admin then
|
if msg.from.id ~= config.admin then
|
||||||
utilities.send_reply(self, msg, config.errors.sudo)
|
utilities.send_reply(msg, config.errors.sudo)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local output = gh_feed:subscribe(id, matches[2])
|
local output = gh_feed:subscribe(id, matches[2])
|
||||||
utilities.send_reply(self, msg, output, true)
|
utilities.send_reply(msg, output, true)
|
||||||
return
|
return
|
||||||
elseif matches[1] == 'del' and matches[2] then
|
elseif matches[1] == 'del' and matches[2] then
|
||||||
if msg.from.id ~= config.admin then
|
if msg.from.id ~= config.admin then
|
||||||
utilities.send_reply(self, msg, config.errors.sudo)
|
utilities.send_reply(msg, config.errors.sudo)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local output = gh_feed:unsubscribe(id, matches[2])
|
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
|
return
|
||||||
elseif matches[1] == 'del' and not matches[2] then
|
elseif matches[1] == 'del' and not matches[2] then
|
||||||
local list_subs, keyboard = gh_feed:print_subs(id, chat_name)
|
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
|
return
|
||||||
elseif matches[1] == 'sync' then
|
elseif matches[1] == 'sync' then
|
||||||
if msg.from.id ~= config.admin then
|
if msg.from.id ~= config.admin then
|
||||||
utilities.send_reply(self, msg, config.errors.sudo)
|
utilities.send_reply(msg, config.errors.sudo)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
gh_feed:cron(self)
|
gh_feed:cron()
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local output = gh_feed:print_subs(id, chat_name)
|
local output = gh_feed:print_subs(id, chat_name)
|
||||||
utilities.send_reply(self, msg, output, true)
|
utilities.send_reply(msg, output, true)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
function gh_feed:cron(self_plz)
|
function gh_feed:cron()
|
||||||
if not self.BASE_URL then
|
|
||||||
self = self_plz
|
|
||||||
end
|
|
||||||
local keys = redis:keys(gh_feed_get_base_redis("*", "subs"))
|
local keys = redis:keys(gh_feed_get_base_redis("*", "subs"))
|
||||||
for k,v in pairs(keys) do
|
for k,v in pairs(keys) do
|
||||||
local repo = string.match(v, "github:(.+):subs")
|
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, "etag"), last_etag)
|
||||||
redis:set(gh_feed_get_base_redis(repo, "date"), last_date)
|
redis:set(gh_feed_get_base_redis(repo, "date"), last_date)
|
||||||
for k2, receiver in pairs(redis:smembers(v)) do
|
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
|
end
|
||||||
end
|
end
|
||||||
|
@ -49,15 +49,15 @@ end
|
|||||||
function golem:action(msg, config, matches)
|
function golem:action(msg, config, matches)
|
||||||
local article_identifier = matches[2]
|
local article_identifier = matches[2]
|
||||||
local data, image_data = golem:get_golem_data(article_identifier)
|
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)
|
local text, image_url = golem:send_golem_data(data, image_data)
|
||||||
|
|
||||||
if image_url then
|
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)
|
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
|
||||||
utilities.send_reply(self, msg, text, true)
|
utilities.send_reply(msg, text, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
return golem
|
return golem
|
@ -25,10 +25,10 @@ end
|
|||||||
function googl:inline_callback(inline_query, config, matches)
|
function googl:inline_callback(inline_query, config, matches)
|
||||||
local shorturl = matches[1]
|
local shorturl = matches[1]
|
||||||
local text, longUrl = googl:send_googl_info(shorturl)
|
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..'"}}]'
|
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
|
end
|
||||||
|
|
||||||
function googl:send_googl_info (shorturl)
|
function googl:send_googl_info (shorturl)
|
||||||
@ -49,8 +49,8 @@ end
|
|||||||
function googl:action(msg, config, matches)
|
function googl:action(msg, config, matches)
|
||||||
local shorturl = matches[1]
|
local shorturl = matches[1]
|
||||||
local text = googl:send_googl_info(shorturl)
|
local text = googl:send_googl_info(shorturl)
|
||||||
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)
|
utilities.send_reply(msg, text)
|
||||||
end
|
end
|
||||||
|
|
||||||
return googl
|
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"}]'
|
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
|
end
|
||||||
|
|
||||||
function gps:action(msg, config, matches)
|
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 lat = matches[1]
|
||||||
local lon = matches[2]
|
local lon = matches[2]
|
||||||
|
|
||||||
@ -42,10 +42,10 @@ function gps:action(msg, config, matches)
|
|||||||
local zoom = zooms[i]
|
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 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')
|
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
|
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
|
end
|
||||||
|
|
||||||
return gps
|
return gps
|
||||||
|
@ -34,7 +34,7 @@ end
|
|||||||
|
|
||||||
function hackernews:action(msg, config, matches)
|
function hackernews:action(msg, config, matches)
|
||||||
local hn_code = matches[1]
|
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
|
end
|
||||||
|
|
||||||
return hackernews
|
return hackernews
|
||||||
|
@ -32,11 +32,11 @@ function heise:action(msg, config, matches)
|
|||||||
local article = URL.escape(matches[1])
|
local article = URL.escape(matches[1])
|
||||||
local text, image_url = heise:get_heise_article(article)
|
local text, image_url = heise:get_heise_article(article)
|
||||||
if image_url then
|
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')
|
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
|
end
|
||||||
utilities.send_reply(self, msg, text, true)
|
utilities.send_reply(msg, text, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
return heise
|
return heise
|
@ -5,7 +5,7 @@ hello.triggers = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function hello:action(msg, config, matches)
|
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
|
end
|
||||||
|
|
||||||
return hello
|
return hello
|
||||||
|
@ -29,10 +29,10 @@ function help:inline_callback(inline_query, config, matches)
|
|||||||
local doc = doc:gsub('\\n', '\\\n')
|
local doc = doc:gsub('\\n', '\\\n')
|
||||||
local chosen_plugin = utilities.get_word(plugin.command, 1)
|
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"}}]'
|
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
|
||||||
end
|
end
|
||||||
utilities.answer_inline_query(self, inline_query)
|
utilities.answer_inline_query(inline_query)
|
||||||
end
|
end
|
||||||
|
|
||||||
function help:action(msg, config, matches)
|
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 .. table.concat(commandlist, '\n• '..config.cmd_pat) .. '\nParameter: <benötigt> [optional]'
|
||||||
local help_text = help_text:gsub('%[', '\\[')
|
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
|
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
|
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
|
end
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@ -75,12 +75,12 @@ function help:action(msg, config, matches)
|
|||||||
local plugin = self.plugins[n]
|
local plugin = self.plugins[n]
|
||||||
if plugin.command and utilities.get_word(plugin.command, 1) == input and plugin.doc then
|
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
|
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
|
return
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|
||||||
return help
|
return help
|
@ -18,8 +18,8 @@ Alias: ]]..config.cmd_pat..[[who
|
|||||||
```]]
|
```]]
|
||||||
end
|
end
|
||||||
|
|
||||||
function id:get_member_count(self, msg, chat_id)
|
function id:get_member_count(msg, chat_id)
|
||||||
return bindings.request(self, 'getChatMembersCount', {
|
return bindings.request('getChatMembersCount', {
|
||||||
chat_id = chat_id
|
chat_id = chat_id
|
||||||
} )
|
} )
|
||||||
end
|
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 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"}}]'
|
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
|
end
|
||||||
|
|
||||||
function id:action(msg, config, matches)
|
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
|
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
|
elseif matches[1] == "chat" then
|
||||||
if msg.chat.type ~= 'group' and msg.chat.type ~= 'supergroup' 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
|
return
|
||||||
end
|
end
|
||||||
local chat_name = msg.chat.title
|
local chat_name = msg.chat.title
|
||||||
@ -106,7 +106,7 @@ function id:action(msg, config, matches)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- get all administrators and the creator
|
-- 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 = {}
|
local admins = {}
|
||||||
for num in pairs(administrators.result) do
|
for num in pairs(administrators.result) do
|
||||||
if administrators.result[num].status ~= 'creator' then
|
if administrators.result[num].status ~= 'creator' then
|
||||||
@ -115,7 +115,7 @@ function id:action(msg, config, matches)
|
|||||||
creator_id = administrators.result[num].user.id
|
creator_id = administrators.result[num].user.id
|
||||||
end
|
end
|
||||||
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
|
local member_count = result.result
|
||||||
if member_count == 1 then
|
if member_count == 1 then
|
||||||
member_count = 'ist *1 Mitglied'
|
member_count = 'ist *1 Mitglied'
|
||||||
@ -132,7 +132,7 @@ function id:action(msg, config, matches)
|
|||||||
text = text..'*'..user.name..'* `['..user.id..']`\n'
|
text = text..'*'..user.name..'* `['..user.id..']`\n'
|
||||||
end
|
end
|
||||||
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -53,22 +53,22 @@ function ifttt:action(msg, config, matches)
|
|||||||
local value3 = matches[4]
|
local value3 = matches[4]
|
||||||
|
|
||||||
if event == '!set' then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if not key then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if event == '!unauth' then
|
if event == '!unauth' then
|
||||||
redis:hdel(hash, 'ifttt')
|
redis:hdel(hash, 'ifttt')
|
||||||
utilities.send_reply(self, msg, '*Erfolgreich ausgeloggt!*', true)
|
utilities.send_reply(msg, '*Erfolgreich ausgeloggt!*', true)
|
||||||
return
|
return
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
return ifttt
|
return ifttt
|
@ -7,8 +7,8 @@ images.triggers = {
|
|||||||
|
|
||||||
function images:action(msg, config, matches)
|
function images:action(msg, config, matches)
|
||||||
local url = matches[1]
|
local url = matches[1]
|
||||||
local file, last_modified, nocache = get_cached_file(url, nil, msg.chat.id, 'upload_photo', self)
|
local file, last_modified, nocache = get_cached_file(url, nil, msg.chat.id, 'upload_photo')
|
||||||
local result = utilities.send_photo(self, msg.chat.id, file, nil, msg.message_id)
|
local result = utilities.send_photo(msg.chat.id, file, nil, msg.message_id)
|
||||||
|
|
||||||
if nocache then return end
|
if nocache then return end
|
||||||
if not result 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 query = matches[1]
|
||||||
local url = BASE_URL..'/?s='..URL.escape(query)
|
local url = BASE_URL..'/?s='..URL.escape(query)
|
||||||
local res, code = https.request(url)
|
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)
|
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 results = '['
|
||||||
local id = 500
|
local id = 500
|
||||||
@ -63,26 +63,26 @@ function imdb:inline_callback(inline_query, config, matches)
|
|||||||
|
|
||||||
local results = results:sub(0, -2)
|
local results = results:sub(0, -2)
|
||||||
local results = results..']'
|
local results = results..']'
|
||||||
utilities.answer_inline_query(self, inline_query, results, 10000)
|
utilities.answer_inline_query(inline_query, results, 10000)
|
||||||
end
|
end
|
||||||
|
|
||||||
function imdb:action(msg, config)
|
function imdb:action(msg, config)
|
||||||
local input = utilities.input_from_msg(msg)
|
local input = utilities.input_from_msg(msg)
|
||||||
if not input then
|
if not input then
|
||||||
utilities.send_reply(self, msg, imdb.doc, true)
|
utilities.send_reply(msg, imdb.doc, true)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local url = BASE_URL..'/?t='..URL.escape(input)
|
local url = BASE_URL..'/?t='..URL.escape(input)
|
||||||
local jstr, res = https.request(url)
|
local jstr, res = https.request(url)
|
||||||
if res ~= 200 then
|
if res ~= 200 then
|
||||||
utilities.send_reply(self, msg, config.errors.connection)
|
utilities.send_reply(msg, config.errors.connection)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local jdat = json.decode(jstr)
|
local jdat = json.decode(jstr)
|
||||||
if jdat.Response ~= 'True' then
|
if jdat.Response ~= 'True' then
|
||||||
utilities.send_reply(self, msg, config.errors.results)
|
utilities.send_reply(msg, config.errors.results)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -90,11 +90,11 @@ function imdb:action(msg, config)
|
|||||||
output = output..string.gsub(jdat.imdbRating, '%.', ',')..'/10 | '..jdat.Runtime..' | '.. jdat.Genre..'\n'
|
output = output..string.gsub(jdat.imdbRating, '%.', ',')..'/10 | '..jdat.Runtime..' | '.. jdat.Genre..'\n'
|
||||||
output = output..'<i>' .. jdat.Plot .. '</i>'
|
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
|
if jdat.Poster ~= "N/A" then
|
||||||
local file = download_to_file(jdat.Poster)
|
local file = download_to_file(jdat.Poster)
|
||||||
utilities.send_photo(self, msg.chat.id, file)
|
utilities.send_photo(msg.chat.id, file)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ end
|
|||||||
|
|
||||||
function imgblacklist:action(msg, config, matches)
|
function imgblacklist:action(msg, config, matches)
|
||||||
if msg.from.id ~= config.admin then
|
if msg.from.id ~= config.admin then
|
||||||
utilities.send_reply(self, msg, config.errors.sudo)
|
utilities.send_reply(msg, config.errors.sudo)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -60,22 +60,22 @@ function imgblacklist:action(msg, config, matches)
|
|||||||
_blacklist = redis:smembers("telegram:img_blacklist")
|
_blacklist = redis:smembers("telegram:img_blacklist")
|
||||||
|
|
||||||
if action == 'add' and not word then
|
if action == 'add' and not word then
|
||||||
utilities.send_reply(self, msg, imgblacklist.doc, true)
|
utilities.send_reply(msg, imgblacklist.doc, true)
|
||||||
return
|
return
|
||||||
elseif action == "add" and word then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if action == 'remove' and not word then
|
if action == 'remove' and not word then
|
||||||
utilities.send_reply(self, msg, imgblacklist.doc, true)
|
utilities.send_reply(msg, imgblacklist.doc, true)
|
||||||
return
|
return
|
||||||
elseif action == "remove" and word then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
utilities.send_reply(self, msg, imgblacklist:show_blacklist())
|
utilities.send_reply(msg, imgblacklist:show_blacklist())
|
||||||
end
|
end
|
||||||
|
|
||||||
return imgblacklist
|
return imgblacklist
|
||||||
|
@ -41,14 +41,14 @@ end
|
|||||||
function imgur:action(msg)
|
function imgur:action(msg)
|
||||||
local imgur_code = matches[1]
|
local imgur_code = matches[1]
|
||||||
if imgur_code == "login" then return nil end
|
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)
|
local link = imgur:get_imgur_data(imgur_code)
|
||||||
if link then
|
if link then
|
||||||
local file = download_to_file(link)
|
local file = download_to_file(link)
|
||||||
if string.ends(link, ".gif") then
|
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
|
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
|
end
|
||||||
end
|
end
|
||||||
|
@ -62,14 +62,14 @@ end
|
|||||||
function instagram:action(msg, config, matches)
|
function instagram:action(msg, config, matches)
|
||||||
local insta_code = matches[1]
|
local insta_code = matches[1]
|
||||||
local data = instagram:get_insta_data(insta_code)
|
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)
|
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)
|
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
|
end
|
||||||
|
|
||||||
return instagram
|
return instagram
|
||||||
|
@ -73,14 +73,14 @@ end
|
|||||||
function ip_info:action(msg, config, matches)
|
function ip_info:action(msg, config, matches)
|
||||||
local host = matches[1]
|
local host = matches[1]
|
||||||
local text, image_url = ip_info:get_host_data(host)
|
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
|
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')
|
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
|
else
|
||||||
utilities.send_reply(self, msg, text)
|
utilities.send_reply(msg, text)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -68,10 +68,10 @@ end
|
|||||||
|
|
||||||
function isup:action(msg, config)
|
function isup:action(msg, config)
|
||||||
if isup:isup(matches[1]) then
|
if isup:isup(matches[1]) then
|
||||||
utilities.send_reply(self, msg, matches[1]..' ist UP! ✅')
|
utilities.send_reply(msg, matches[1]..' ist UP! ✅')
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
utilities.send_reply(self, msg, matches[1]..' ist DOWN! ❌')
|
utilities.send_reply(msg, matches[1]..' ist DOWN! ❌')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -44,20 +44,20 @@ function loc_manager:action(msg, config, matches)
|
|||||||
local user_id = msg.from.id
|
local user_id = msg.from.id
|
||||||
|
|
||||||
if matches[1] == 'set' then
|
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
|
return
|
||||||
elseif matches[1] == 'del' then
|
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
|
return
|
||||||
else
|
else
|
||||||
local set_location = get_location(user_id)
|
local set_location = get_location(user_id)
|
||||||
if not set_location then
|
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
|
return
|
||||||
else
|
else
|
||||||
local coords = utilities.get_coords(set_location, config)
|
local coords = utilities.get_coords(set_location, config)
|
||||||
utilities.send_location(self, msg.chat.id, coords.lat, coords.lon, msg.message_id)
|
utilities.send_location(msg.chat.id, coords.lat, coords.lon, msg.message_id)
|
||||||
utilities.send_reply(self, msg, 'Gesetzter Wohnort: *'..set_location..'*', true)
|
utilities.send_reply(msg, 'Gesetzter Wohnort: *'..set_location..'*', true)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -23,7 +23,7 @@ function luarun:action(msg, config)
|
|||||||
|
|
||||||
local input = utilities.input(msg.text)
|
local input = utilities.input(msg.text)
|
||||||
if not input then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -40,8 +40,8 @@ function luarun:action(msg, config)
|
|||||||
local URL = require('socket.url')
|
local URL = require('socket.url')
|
||||||
local HTTP = require('socket.http')
|
local HTTP = require('socket.http')
|
||||||
local HTTPS = require('ssl.https')
|
local HTTPS = require('ssl.https')
|
||||||
return function (self, msg, config) ]] .. input .. [[ end
|
return function (msg, config) ]] .. input .. [[ end
|
||||||
]] )()(self, msg, config)
|
]] )()(msg, config)
|
||||||
if output == nil then
|
if output == nil then
|
||||||
output = 'Done!'
|
output = 'Done!'
|
||||||
else
|
else
|
||||||
@ -53,7 +53,7 @@ function luarun:action(msg, config)
|
|||||||
end
|
end
|
||||||
output = '```\n' .. tostring(output) .. '\n```'
|
output = '```\n' .. tostring(output) .. '\n```'
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
|
@ -36,12 +36,12 @@ function lyrics:action(msg, config, matches)
|
|||||||
if msg.reply_to_message and msg.reply_to_message.text then
|
if msg.reply_to_message and msg.reply_to_message.text then
|
||||||
input = msg.reply_to_message.text
|
input = msg.reply_to_message.text
|
||||||
else
|
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
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
utilities.send_reply(self, msg, lyrics:getLyrics(input), true)
|
utilities.send_reply(msg, lyrics:getLyrics(input), true)
|
||||||
end
|
end
|
||||||
|
|
||||||
return lyrics
|
return lyrics
|
||||||
|
@ -15,7 +15,7 @@ function muschel:frag_die_muschel()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function muschel:action(msg, config, matches)
|
function muschel:action(msg, config, matches)
|
||||||
utilities.send_reply(self, msg, muschel:frag_die_muschel())
|
utilities.send_reply(msg, muschel:frag_die_muschel())
|
||||||
end
|
end
|
||||||
|
|
||||||
return muschel
|
return muschel
|
||||||
|
@ -34,19 +34,19 @@ function media:action(msg, config, matches)
|
|||||||
chat_action = 'upload_document'
|
chat_action = 'upload_document'
|
||||||
end
|
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 not file then return end
|
||||||
|
|
||||||
if ext == 'gif' then
|
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
|
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
|
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
|
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
|
else
|
||||||
result = utilities.send_document(self, receiver, file, nil, msg.message_id)
|
result = utilities.send_document(receiver, file, nil, msg.message_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
if nocache then return end
|
if nocache then return end
|
||||||
|
@ -74,7 +74,7 @@ function mc_server:parseText(text, mc_server)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function mc_server:action(msg, config, matches)
|
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
|
end
|
||||||
|
|
||||||
return mc_server
|
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
|
if msg.reply_to_message and msg.reply_to_message.text then
|
||||||
input = msg.reply_to_message.text
|
input = msg.reply_to_message.text
|
||||||
else
|
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
|
return
|
||||||
end
|
end
|
||||||
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 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)
|
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
|
end
|
||||||
|
|
||||||
return mc_skin
|
return mc_skin
|
||||||
|
@ -191,31 +191,31 @@ function mal:action(msg, config, matches)
|
|||||||
if matches[1] == 'anime' then
|
if matches[1] == 'anime' then
|
||||||
local anime_info = mal:get_mal_info(query, 'anime')
|
local anime_info = mal:get_mal_info(query, 'anime')
|
||||||
if anime_info == "HTTP-Fehler" then
|
if anime_info == "HTTP-Fehler" then
|
||||||
utilities.send_reply(self, msg, 'Anime nicht gefunden!')
|
utilities.send_reply(msg, 'Anime nicht gefunden!')
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
local text, image_url = mal:send_anime_data(anime_info)
|
local text, image_url = mal:send_anime_data(anime_info)
|
||||||
if image_url then
|
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)
|
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
|
||||||
utilities.send_reply(self, msg, text, true)
|
utilities.send_reply(msg, text, true)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
elseif matches[1] == 'manga' then
|
elseif matches[1] == 'manga' then
|
||||||
local manga_info = mal:get_mal_info(query, 'manga')
|
local manga_info = mal:get_mal_info(query, 'manga')
|
||||||
if manga_info == "HTTP-Fehler" then
|
if manga_info == "HTTP-Fehler" then
|
||||||
utilities.send_reply(self, msg, 'Manga nicht gefunden!')
|
utilities.send_reply(msg, 'Manga nicht gefunden!')
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
local text, image_url = mal:send_manga_data(manga_info)
|
local text, image_url = mal:send_manga_data(manga_info)
|
||||||
if image_url then
|
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)
|
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
|
||||||
utilities.send_reply(self, msg, text, true)
|
utilities.send_reply(msg, text, true)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -23,7 +23,7 @@ function isWordFoundInString(word,input)
|
|||||||
select(2,input:gsub('%W+' .. word .. '%W+','')) > 0
|
select(2,input:gsub('%W+' .. word .. '%W+','')) > 0
|
||||||
end
|
end
|
||||||
|
|
||||||
function notify:pre_process(msg, self)
|
function notify:pre_process(msg)
|
||||||
local notify_users = redis:smembers('notify:ls')
|
local notify_users = redis:smembers('notify:ls')
|
||||||
|
|
||||||
-- I call this beautiful lady the "if soup"
|
-- 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 from = string.gsub(msg.from.name, "%_", " ")
|
||||||
local chat_name = string.gsub(msg.chat.title, "%_", " ")
|
local chat_name = string.gsub(msg.chat.title, "%_", " ")
|
||||||
local text = from..' am '..send_date..' in "'..chat_name..'":\n\n'..msg.text
|
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
|
end
|
||||||
end
|
end
|
||||||
@ -57,7 +57,7 @@ end
|
|||||||
|
|
||||||
function notify:action(msg, config, matches)
|
function notify:action(msg, config, matches)
|
||||||
if not msg.from.username then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -67,18 +67,18 @@ function notify:action(msg, config, matches)
|
|||||||
|
|
||||||
if matches[1] == "del" then
|
if matches[1] == "del" then
|
||||||
if not redis:sismember('notify:ls', username) 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
|
return
|
||||||
end
|
end
|
||||||
print('Setting notify in redis hash '..hash..' to false')
|
print('Setting notify in redis hash '..hash..' to false')
|
||||||
redis:hset(hash, 'notify', false)
|
redis:hset(hash, 'notify', false)
|
||||||
print('Removing '..username..' from redis set notify:ls')
|
print('Removing '..username..' from redis set notify:ls')
|
||||||
redis:srem('notify:ls', username)
|
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
|
return
|
||||||
else
|
else
|
||||||
if redis:sismember('notify:ls', username) then
|
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
|
return
|
||||||
end
|
end
|
||||||
print('Setting notify in redis hash '..hash..' to true')
|
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)
|
redis:hset(hash, 'id', msg.from.id)
|
||||||
print('Adding '..username..' to redis set notify:ls')
|
print('Adding '..username..' to redis set notify:ls')
|
||||||
redis:sadd('notify:ls', username)
|
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
|
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
|
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
|
end
|
||||||
end
|
end
|
||||||
|
@ -26,10 +26,10 @@ function pagespeed_insights:get_pagespeed(test_url)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function pagespeed_insights:action(msg, config, matches)
|
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])
|
local text = pagespeed_insights:get_pagespeed(matches[1])
|
||||||
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
|
end
|
||||||
|
|
||||||
return pagespeed_insights
|
return pagespeed_insights
|
||||||
|
@ -33,10 +33,10 @@ function pasteee:action(msg, config, matches)
|
|||||||
local text = matches[1]
|
local text = matches[1]
|
||||||
local link, iserror = upload(text)
|
local link, iserror = upload(text)
|
||||||
if iserror then
|
if iserror then
|
||||||
utilities.send_reply(self, msg, link)
|
utilities.send_reply(msg, link)
|
||||||
return
|
return
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
return pasteee
|
return pasteee
|
@ -23,11 +23,11 @@ function patterns:action(msg)
|
|||||||
end
|
end
|
||||||
)
|
)
|
||||||
if res == false then
|
if res == false then
|
||||||
utilities.send_reply(self, msg, 'Falsches Pattern!')
|
utilities.send_reply(msg, 'Falsches Pattern!')
|
||||||
else
|
else
|
||||||
output = output:sub(1, 4000)
|
output = output:sub(1, 4000)
|
||||||
output = '*Du meintest wohl*:\n"'..utilities.md_escape(utilities.trim(output))..'"'
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -101,13 +101,13 @@ function pixabay:action(msg, config, matches)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if url == 'NOPIX' then
|
if url == 'NOPIX' then
|
||||||
utilities.send_reply(self, msg, config.errors.results)
|
utilities.send_reply(msg, config.errors.results)
|
||||||
return
|
return
|
||||||
else
|
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 file = download_to_file(url)
|
||||||
local text = '"'..tags..'" von '..user
|
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
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -50,7 +50,7 @@ function play_store:action(msg, config, matches)
|
|||||||
if data == nil then
|
if data == nil then
|
||||||
return
|
return
|
||||||
else
|
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
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -162,13 +162,13 @@ end
|
|||||||
|
|
||||||
function plugin_manager:action(msg, config, matches)
|
function plugin_manager:action(msg, config, matches)
|
||||||
if msg.from.id ~= config.admin then
|
if msg.from.id ~= config.admin then
|
||||||
utilities.send_reply(self, msg, config.errors.sudo)
|
utilities.send_reply(msg, config.errors.sudo)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Show the available plugins
|
-- Show the available plugins
|
||||||
if matches[1] == '/plugins' then
|
if matches[1] == '/plugins' then
|
||||||
utilities.send_reply(self, msg, plugin_manager:list_plugins())
|
utilities.send_reply(msg, plugin_manager:list_plugins())
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -178,11 +178,11 @@ function plugin_manager:action(msg, config, matches)
|
|||||||
if matches[4] then
|
if matches[4] then
|
||||||
local id = matches[4]
|
local id = matches[4]
|
||||||
print("enable "..plugin..' on chat#id'..id)
|
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
|
return
|
||||||
else
|
else
|
||||||
print("enable "..plugin..' on this chat')
|
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
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -191,7 +191,7 @@ function plugin_manager:action(msg, config, matches)
|
|||||||
if matches[1] == 'enable' then
|
if matches[1] == 'enable' then
|
||||||
local plugin_name = matches[2]
|
local plugin_name = matches[2]
|
||||||
print("enable: "..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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -201,11 +201,11 @@ function plugin_manager:action(msg, config, matches)
|
|||||||
if matches[4] then
|
if matches[4] then
|
||||||
local id = matches[4]
|
local id = matches[4]
|
||||||
print("disable "..plugin..' on chat#id'..id)
|
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
|
return
|
||||||
else
|
else
|
||||||
print("disable "..plugin..' on this chat')
|
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
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -213,13 +213,13 @@ function plugin_manager:action(msg, config, matches)
|
|||||||
-- Disable a plugin
|
-- Disable a plugin
|
||||||
if matches[1] == 'disable' then
|
if matches[1] == 'disable' then
|
||||||
print("disable: "..matches[2])
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Reload all the plugins!
|
-- Reload all the plugins!
|
||||||
if matches[1] == 'reload' then
|
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
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -102,40 +102,40 @@ function pocket:action(msg, config, matches)
|
|||||||
|
|
||||||
if matches[1] == 'set' then
|
if matches[1] == 'set' then
|
||||||
local access_token = matches[2]
|
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')
|
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')
|
redis:hdel(hash, 'pocket_login_msg')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if not access_token then
|
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)
|
redis:hset(hash, 'pocket_login_msg', result.result.message_id)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if matches[1] == 'unauth' then
|
if matches[1] == 'unauth' then
|
||||||
redis:hdel(hash, 'pocket')
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if matches[1] == 'add' then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if matches[1] == 'archive' or matches[1] == 'delete' or matches[1] == 'readd' or matches[1] == 'favorite' or matches[1] == 'unfavorite' then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if msg.chat.type == 'chat' or msg.chat.type == 'supergroup' then
|
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
|
return
|
||||||
else
|
else
|
||||||
utilities.send_reply(self, msg, pocket:list_pocket_items(access_token))
|
utilities.send_reply(msg, pocket:list_pocket_items(access_token))
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -7,7 +7,7 @@ post_photo.triggers = {
|
|||||||
'/nil'
|
'/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
|
if not msg.document then return msg end -- Ignore
|
||||||
local mime_type = msg.document.mime_type
|
local mime_type = msg.document.mime_type
|
||||||
local valid_mimetypes = {['image/jpeg'] = true, ['image/png'] = true, ['image/bmp'] = true}
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
utilities.send_typing(self, msg.chat.id, 'upload_photo')
|
utilities.send_typing(msg.chat.id, 'upload_photo')
|
||||||
-- Saving file to the Telegram Cloud
|
-- Saving file to the Telegram Cloud
|
||||||
local request = bindings.request(self, 'getFile', {
|
local request = bindings.request('getFile', {
|
||||||
file_id = file_id
|
file_id = file_id
|
||||||
} )
|
} )
|
||||||
|
|
||||||
local download_url = 'https://api.telegram.org/file/bot'..config.bot_api_key..'/'..request.result.file_path
|
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)
|
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
|
return msg
|
||||||
end
|
end
|
||||||
|
@ -15,9 +15,9 @@ end
|
|||||||
function preview:inline_callback(inline_query, config, matches)
|
function preview:inline_callback(inline_query, config, matches)
|
||||||
local preview_url = matches[1]
|
local preview_url = matches[1]
|
||||||
local res, code = https.request('https://brawlbot.tk/apis/simple_meta_api/?url='..URL.escape(preview_url))
|
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)
|
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
|
if data.title then
|
||||||
title = data.title
|
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 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}}]'
|
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
|
end
|
||||||
|
|
||||||
function preview:action(msg)
|
function preview:action(msg)
|
||||||
local input = utilities.input_from_msg(msg)
|
local input = utilities.input_from_msg(msg)
|
||||||
if not input then
|
if not input then
|
||||||
utilities.send_reply(self, msg, preview.doc, true)
|
utilities.send_reply(msg, preview.doc, true)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -59,18 +59,18 @@ function preview:action(msg)
|
|||||||
|
|
||||||
local res = http.request(input)
|
local res = http.request(input)
|
||||||
if not res then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if res:len() == 0 then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Invisible zero-width, non-joiner.
|
-- Invisible zero-width, non-joiner.
|
||||||
local output = '<a href="' .. input .. '">' .. utilities.char.zwnj .. '</a>'
|
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
|
end
|
||||||
|
|
||||||
return preview
|
return preview
|
@ -71,9 +71,9 @@ end
|
|||||||
|
|
||||||
function qr:inline_callback(inline_query, config, matches)
|
function qr:inline_callback(inline_query, config, matches)
|
||||||
local text = matches[1]
|
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')
|
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
|
local id = 600
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ function qr:inline_callback(inline_query, config, matches)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local results = results..']'
|
local results = results..']'
|
||||||
utilities.answer_inline_query(self, inline_query, results, 10000)
|
utilities.answer_inline_query(inline_query, results, 10000)
|
||||||
end
|
end
|
||||||
|
|
||||||
function qr:action(msg, config, matches)
|
function qr:action(msg, config, matches)
|
||||||
@ -108,9 +108,9 @@ function qr:action(msg, config, matches)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local image_url = qr:qr(text, color, back)
|
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')
|
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
|
end
|
||||||
|
|
||||||
return qr
|
return qr
|
||||||
|
@ -81,28 +81,28 @@ end
|
|||||||
|
|
||||||
function quotes:action(msg, config, matches)
|
function quotes:action(msg, config, matches)
|
||||||
if matches[1] == "quote" then
|
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
|
return
|
||||||
elseif matches[1] == "addquote" and matches[2] then
|
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
|
return
|
||||||
elseif matches[1] == "delquote" and matches[2] then
|
elseif matches[1] == "delquote" and matches[2] then
|
||||||
if msg.from.id ~= config.admin then
|
if msg.from.id ~= config.admin then
|
||||||
utilities.send_reply(self, msg, config.errors.sudo)
|
utilities.send_reply(msg, config.errors.sudo)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
utilities.send_reply(self, msg, quotes:delete_quote(msg), true)
|
utilities.send_reply(msg, quotes:delete_quote(msg), true)
|
||||||
return
|
return
|
||||||
elseif matches[1] == "listquotes" then
|
elseif matches[1] == "listquotes" then
|
||||||
local link, iserror = quotes:list_quotes(msg)
|
local link, iserror = quotes:list_quotes(msg)
|
||||||
if iserror then
|
if iserror then
|
||||||
utilities.send_reply(self, msg, link, true)
|
utilities.send_reply(msg, link, true)
|
||||||
return
|
return
|
||||||
end
|
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
|
return
|
||||||
end
|
end
|
||||||
utilities.send_reply(self, msg, quotes.doc, true)
|
utilities.send_reply(msg, quotes.doc, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
return quotes
|
return quotes
|
||||||
|
@ -52,14 +52,14 @@ function fun:action(msg, config, matches)
|
|||||||
if msg.reply_to_message and msg.reply_to_message.text then
|
if msg.reply_to_message and msg.reply_to_message.text then
|
||||||
input = msg.reply_to_message.text
|
input = msg.reply_to_message.text
|
||||||
else
|
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
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local user_name = get_name(msg)
|
local user_name = get_name(msg)
|
||||||
local result = fun:choose_random(user_name, input)
|
local result = fun:choose_random(user_name, input)
|
||||||
utilities.send_message(self, msg.chat.id, result)
|
utilities.send_message(msg.chat.id, result)
|
||||||
end
|
end
|
||||||
|
|
||||||
return fun
|
return fun
|
||||||
|
@ -61,15 +61,15 @@ function reddit:action(msg, config)
|
|||||||
end
|
end
|
||||||
local jstr, res = https.request(url)
|
local jstr, res = https.request(url)
|
||||||
if res ~= 200 then
|
if res ~= 200 then
|
||||||
utilities.send_reply(self, msg, config.errors.results)
|
utilities.send_reply(msg, config.errors.results)
|
||||||
else
|
else
|
||||||
local jdat = json.decode(jstr)
|
local jdat = json.decode(jstr)
|
||||||
if #jdat.data.children == 0 then
|
if #jdat.data.children == 0 then
|
||||||
utilities.send_reply(self, msg, config.errors.results)
|
utilities.send_reply(msg, config.errors.results)
|
||||||
else
|
else
|
||||||
local output = format_results(jdat.data.children)
|
local output = format_results(jdat.data.children)
|
||||||
output = source .. output
|
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
|
end
|
||||||
end
|
end
|
||||||
|
@ -39,12 +39,12 @@ function reddit_post:action(msg, config, matches)
|
|||||||
local subreddit = matches[1]
|
local subreddit = matches[1]
|
||||||
local reddit_code = matches[2]
|
local reddit_code = matches[2]
|
||||||
local data = reddit_post:get_reddit_data(subreddit, reddit_code)
|
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)
|
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
|
end
|
||||||
|
|
||||||
return reddit_post
|
return reddit_post
|
||||||
|
@ -16,13 +16,13 @@ end
|
|||||||
function remind:action(msg, config)
|
function remind:action(msg, config)
|
||||||
local input = utilities.input(msg.text)
|
local input = utilities.input(msg.text)
|
||||||
if not input then
|
if not input then
|
||||||
utilities.send_reply(self, msg, remind.doc, true)
|
utilities.send_reply(msg, remind.doc, true)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local duration = tonumber(utilities.get_word(input, 1))
|
local duration = tonumber(utilities.get_word(input, 1))
|
||||||
if not duration then
|
if not duration then
|
||||||
utilities.send_reply(self, msg, remind.doc, true)
|
utilities.send_reply(msg, remind.doc, true)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -33,12 +33,12 @@ function remind:action(msg, config)
|
|||||||
end
|
end
|
||||||
local message = utilities.input(input)
|
local message = utilities.input(input)
|
||||||
if not message then
|
if not message then
|
||||||
utilities.send_reply(self, msg, remind.doc, true)
|
utilities.send_reply(msg, remind.doc, true)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if #message > config.remind.max_length then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ function remind:action(msg, config)
|
|||||||
local human_readable_time = convert_timestamp(timestamp, '%H:%M:%S')
|
local human_readable_time = convert_timestamp(timestamp, '%H:%M:%S')
|
||||||
output = 'Ich werde dich um *'..human_readable_time..' Uhr* erinnern.'
|
output = 'Ich werde dich um *'..human_readable_time..' Uhr* erinnern.'
|
||||||
end
|
end
|
||||||
utilities.send_reply(self, msg, output, true)
|
utilities.send_reply(msg, output, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
function remind:cron(config)
|
function remind:cron(config)
|
||||||
@ -73,7 +73,7 @@ function remind:cron(config)
|
|||||||
-- Otherwise, add it to the replacement table.
|
-- Otherwise, add it to the replacement table.
|
||||||
if time > reminder.time then
|
if time > reminder.time then
|
||||||
local output = '*ERINNERUNG:*\n"' .. utilities.md_escape(reminder.message) .. '"'
|
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 the message fails to send, save it for later (if enabled in config).
|
||||||
if res or not config.remind.persist then
|
if res or not config.remind.persist then
|
||||||
group[k] = nil
|
group[k] = nil
|
||||||
|
@ -41,7 +41,7 @@ function respond:inline_callback(inline_query, config, matches)
|
|||||||
face = '¯\\\\\\_(ツ)_/¯'
|
face = '¯\\\\\\_(ツ)_/¯'
|
||||||
end
|
end
|
||||||
results = '[{"type":"article","id":"8","title":"'..face..'","input_message_content":{"message_text":"'..face..'"}}]'
|
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
|
end
|
||||||
|
|
||||||
function respond:action(msg, config, matches)
|
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 user_name == "DefenderX" then user_name = "Deffu" end
|
||||||
|
|
||||||
if string.match(msg.text, "[Ff][Gg][Tt].? [Ss][Ww][Ii][Ff][Tt]") then
|
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
|
return
|
||||||
elseif string.match(msg.text, "([Ee][Ii][Nn][Zz][Ii][Gg][Ss][Tt][Ee][Ss])") then
|
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
|
return
|
||||||
elseif string.match(msg.text, "([Ee][Ii][Nn][Zz][Ii][Gg][Ss][Tt][Ee][Rr])") then
|
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
|
return
|
||||||
elseif string.match(msg.text, "([Ee][Ii][Nn][Zz][Ii][Gg][Ss][Tt][Ee])") then
|
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
|
return
|
||||||
elseif string.match(msg.text, "[Bb][Oo][Tt]%??") then
|
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
|
return
|
||||||
elseif string.match(msg.text, "[Ll][Oo][Dd]") then
|
elseif string.match(msg.text, "[Ll][Oo][Dd]") then
|
||||||
utilities.send_message(self, receiver, 'ಠ_ಠ')
|
utilities.send_message(receiver, 'ಠ_ಠ')
|
||||||
return
|
return
|
||||||
elseif string.match(msg.text, "[Ll][Ff]") then
|
elseif string.match(msg.text, "[Ll][Ff]") then
|
||||||
utilities.send_message(self, receiver, '( ͡° ͜ʖ ͡°)')
|
utilities.send_message(receiver, '( ͡° ͜ʖ ͡°)')
|
||||||
return
|
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
|
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
|
return
|
||||||
elseif string.match(msg.text, "[Ff][Rr][Oo][Ss][Cc][Hh]") then
|
elseif string.match(msg.text, "[Ff][Rr][Oo][Ss][Cc][Hh]") then
|
||||||
utilities.send_message(self, receiver, '🐸🐸🐸')
|
utilities.send_message(receiver, '🐸🐸🐸')
|
||||||
return
|
return
|
||||||
elseif string.match(msg.text, "[Ii][Nn][Ll][Oo][Vv][Ee]") then
|
elseif string.match(msg.text, "[Ii][Nn][Ll][Oo][Vv][Ee]") then
|
||||||
local file = download_to_file(BASE_URL..'/inlove.gif')
|
local file = download_to_file(BASE_URL..'/inlove.gif')
|
||||||
utilities.send_document(self, receiver, file)
|
utilities.send_document(receiver, file)
|
||||||
return
|
return
|
||||||
elseif string.match(msg.text, "[Ww][Aa][Tt]") then
|
elseif string.match(msg.text, "[Ww][Aa][Tt]") then
|
||||||
local WAT_URL = BASE_URL..'/wat'
|
local WAT_URL = BASE_URL..'/wat'
|
||||||
@ -95,7 +95,7 @@ function respond:action(msg, config, matches)
|
|||||||
}
|
}
|
||||||
local random_wat = math.random(5)
|
local random_wat = math.random(5)
|
||||||
local file = download_to_file(WAT_URL..wats[random_wat])
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ function roll:roll_dice()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function roll:action(msg)
|
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
|
end
|
||||||
|
|
||||||
return roll
|
return roll
|
||||||
|
@ -212,42 +212,42 @@ function rss:action(msg, config, matches)
|
|||||||
-- For channels
|
-- For channels
|
||||||
if matches[1] == 'sub' and matches[2] and matches[3] then
|
if matches[1] == 'sub' and matches[2] and matches[3] then
|
||||||
if msg.from.id ~= config.admin then
|
if msg.from.id ~= config.admin then
|
||||||
utilities.send_reply(self, msg, config.errors.sudo)
|
utilities.send_reply(msg, config.errors.sudo)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local id = '@'..matches[3]
|
local id = '@'..matches[3]
|
||||||
local result = utilities.get_chat_info(self, id)
|
local result = utilities.get_chat_info(id)
|
||||||
if not result then
|
if not result then
|
||||||
utilities.send_reply(self, msg, 'Diesen Kanal gibt es nicht!')
|
utilities.send_reply(msg, 'Diesen Kanal gibt es nicht!')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local output = rss:subscribe(id, matches[2])
|
local output = rss:subscribe(id, matches[2])
|
||||||
utilities.send_reply(self, msg, output, 'HTML')
|
utilities.send_reply(msg, output, 'HTML')
|
||||||
return
|
return
|
||||||
elseif matches[1] == 'del' and matches[2] and matches[3] then
|
elseif matches[1] == 'del' and matches[2] and matches[3] then
|
||||||
if msg.from.id ~= config.admin then
|
if msg.from.id ~= config.admin then
|
||||||
utilities.send_reply(self, msg, config.errors.sudo)
|
utilities.send_reply(msg, config.errors.sudo)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local id = '@'..matches[3]
|
local id = '@'..matches[3]
|
||||||
local result = utilities.get_chat_info(self, id)
|
local result = utilities.get_chat_info(id)
|
||||||
if not result then
|
if not result then
|
||||||
utilities.send_reply(self, msg, 'Diesen Kanal gibt es nicht!')
|
utilities.send_reply(msg, 'Diesen Kanal gibt es nicht!')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local output = rss:unsubscribe(id, matches[2])
|
local output = rss:unsubscribe(id, matches[2])
|
||||||
utilities.send_reply(self, msg, output, 'HTML')
|
utilities.send_reply(msg, output, 'HTML')
|
||||||
return
|
return
|
||||||
elseif matches[1] == 'rss' and matches[2] then
|
elseif matches[1] == 'rss' and matches[2] then
|
||||||
local id = '@'..matches[2]
|
local id = '@'..matches[2]
|
||||||
local result = utilities.get_chat_info(self, id)
|
local result = utilities.get_chat_info(id)
|
||||||
if not result then
|
if not result then
|
||||||
utilities.send_reply(self, msg, 'Diesen Kanal gibt es nicht!')
|
utilities.send_reply(msg, 'Diesen Kanal gibt es nicht!')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local chat_name = result.result.title
|
local chat_name = result.result.title
|
||||||
local output = rss:print_subs(id, chat_name)
|
local output = rss:print_subs(id, chat_name)
|
||||||
utilities.send_reply(self, msg, output, 'HTML')
|
utilities.send_reply(msg, output, 'HTML')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -259,42 +259,39 @@ function rss:action(msg, config, matches)
|
|||||||
|
|
||||||
if matches[1] == 'sub' and matches[2] then
|
if matches[1] == 'sub' and matches[2] then
|
||||||
if msg.from.id ~= config.admin then
|
if msg.from.id ~= config.admin then
|
||||||
utilities.send_reply(self, msg, config.errors.sudo)
|
utilities.send_reply(msg, config.errors.sudo)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local output = rss:subscribe(id, matches[2])
|
local output = rss:subscribe(id, matches[2])
|
||||||
utilities.send_reply(self, msg, output, 'HTML')
|
utilities.send_reply(msg, output, 'HTML')
|
||||||
return
|
return
|
||||||
elseif matches[1] == 'del' and matches[2] then
|
elseif matches[1] == 'del' and matches[2] then
|
||||||
if msg.from.id ~= config.admin then
|
if msg.from.id ~= config.admin then
|
||||||
utilities.send_reply(self, msg, config.errors.sudo)
|
utilities.send_reply(msg, config.errors.sudo)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local output = rss:unsubscribe(id, matches[2])
|
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
|
return
|
||||||
elseif matches[1] == 'del' and not matches[2] then
|
elseif matches[1] == 'del' and not matches[2] then
|
||||||
local list_subs, keyboard = rss:print_subs(id, chat_name)
|
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
|
return
|
||||||
elseif matches[1] == 'sync' then
|
elseif matches[1] == 'sync' then
|
||||||
if msg.from.id ~= config.admin then
|
if msg.from.id ~= config.admin then
|
||||||
utilities.send_reply(self, msg, config.errors.sudo)
|
utilities.send_reply(msg, config.errors.sudo)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
rss:cron(self)
|
rss:cron()
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local output = rss:print_subs(id, chat_name)
|
local output = rss:print_subs(id, chat_name)
|
||||||
utilities.send_reply(self, msg, output, 'HTML')
|
utilities.send_reply(msg, output, 'HTML')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
function rss:cron(self_plz)
|
function rss:cron()
|
||||||
if not self.BASE_URL then
|
|
||||||
self = self_plz
|
|
||||||
end
|
|
||||||
local keys = redis:keys(get_base_redis("*", "subs"))
|
local keys = redis:keys(get_base_redis("*", "subs"))
|
||||||
for k,v in pairs(keys) do
|
for k,v in pairs(keys) do
|
||||||
local base = string.match(v, "rss:(.+):subs") -- Get the URL base
|
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
|
for k2, receiver in pairs(redis:smembers(v)) do
|
||||||
local receiver = string.gsub(receiver, 'chat%#id', '')
|
local receiver = string.gsub(receiver, 'chat%#id', '')
|
||||||
local receiver = string.gsub(receiver, 'user%#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
|
end
|
||||||
end
|
end
|
||||||
|
@ -22,10 +22,10 @@ function entergroup:chat_new_user(msg, self)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
local text = 'Hallo '..user_name..', willkommen bei <b>'..chat_title..'</b>!'..added_by
|
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
|
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
|
if msg.left_chat_member.id == msg.from.id then -- silent ignore, if user wasn't kicked
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@ -36,7 +36,7 @@ function entergroup:chat_del_user(msg, self)
|
|||||||
at_name = ''
|
at_name = ''
|
||||||
end
|
end
|
||||||
local text = '<b>'..user_name..'</b> wurde von <b>'..msg.from.first_name..'</b>'..at_name..' aus der Gruppe gekickt.'
|
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
|
end
|
||||||
|
|
||||||
function entergroup:action(msg, config, matches)
|
function entergroup:action(msg, config, matches)
|
||||||
@ -45,7 +45,7 @@ function entergroup:action(msg, config, matches)
|
|||||||
if matches[1] == 'new_chat_member' then
|
if matches[1] == 'new_chat_member' then
|
||||||
entergroup:chat_new_user(msg, self)
|
entergroup:chat_new_user(msg, self)
|
||||||
elseif matches[1] == 'left_chat_member'then
|
elseif matches[1] == 'left_chat_member'then
|
||||||
entergroup:chat_del_user(msg, self)
|
entergroup:chat_del_user(msg)
|
||||||
end
|
end
|
||||||
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
|
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)
|
function leave_group:check_for_admin(msg, config)
|
||||||
local result = bindings.request(self, 'getChatMember', {
|
local result = bindings.request('getChatMember', {
|
||||||
chat_id = msg.chat.id,
|
chat_id = msg.chat.id,
|
||||||
user_id = config.admin
|
user_id = config.admin
|
||||||
} )
|
} )
|
||||||
@ -25,11 +25,11 @@ end
|
|||||||
|
|
||||||
function leave_group:action(msg, config)
|
function leave_group:action(msg, config)
|
||||||
if not is_service_msg(msg) then return end -- Bad attempt at trolling!
|
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
|
if not admin_in_group then
|
||||||
print('Admin ist nicht in der Gruppe, verlasse sie deshalb...')
|
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!')
|
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(self, 'leaveChat', {
|
local result = bindings.request('leaveChat', {
|
||||||
chat_id = msg.chat.id
|
chat_id = msg.chat.id
|
||||||
} )
|
} )
|
||||||
local chat_name = msg.chat.title
|
local chat_name = msg.chat.title
|
||||||
@ -37,7 +37,7 @@ function leave_group:action(msg, config)
|
|||||||
local from = msg.from.name
|
local from = msg.from.name
|
||||||
local from_id = msg.from.id
|
local from_id = msg.from.id
|
||||||
if report_to_admin then
|
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
|
end
|
||||||
end
|
end
|
||||||
|
@ -60,7 +60,7 @@ function migrate:action(msg, config, matches)
|
|||||||
end
|
end
|
||||||
|
|
||||||
print('--- SUPERGROUP MIGRATION ENDED ---')
|
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
|
end
|
||||||
|
|
||||||
return migrate
|
return migrate
|
@ -33,7 +33,7 @@ end
|
|||||||
function set:action(msg)
|
function set:action(msg)
|
||||||
local input = utilities.input(msg.text)
|
local input = utilities.input(msg.text)
|
||||||
if not input or not input:match('([^%s]+) (.+)') then
|
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ function set:action(msg)
|
|||||||
output = set:save_value(msg, name, value)
|
output = set:save_value(msg, name, value)
|
||||||
end
|
end
|
||||||
|
|
||||||
utilities.send_message(self, msg.chat.id, output, true, nil, true)
|
utilities.send_message(msg.chat.id, output, true, nil, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
return set
|
return set
|
||||||
|
@ -37,18 +37,18 @@ function settings:action(msg, config, matches)
|
|||||||
local hash = 'user:'..msg.from.id
|
local hash = 'user:'..msg.from.id
|
||||||
|
|
||||||
if matches[1] == '⚙ Einstellungen' or matches[1] == '/settings' then
|
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
|
return
|
||||||
elseif matches[1] == '💤 AFK-Keyboard einschalten' then
|
elseif matches[1] == '💤 AFK-Keyboard einschalten' then
|
||||||
redis:hset(hash, 'afk_keyboard', 'true')
|
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
|
return
|
||||||
elseif matches[1] == '💤 AFK-Keyboard ausschalten' then
|
elseif matches[1] == '💤 AFK-Keyboard ausschalten' then
|
||||||
redis:hset(hash, 'afk_keyboard', 'false')
|
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
|
return
|
||||||
elseif matches[1] == '❌ Einstellungen verstecken' then
|
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
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -6,13 +6,13 @@ end
|
|||||||
|
|
||||||
function shell:action(msg, config)
|
function shell:action(msg, config)
|
||||||
if not is_sudo(msg, config) then
|
if not is_sudo(msg, config) then
|
||||||
utilities.send_reply(self, msg, config.errors.sudo)
|
utilities.send_reply(msg, config.errors.sudo)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local input = utilities.input(msg.text)
|
local input = utilities.input(msg.text)
|
||||||
if not input then
|
if not input then
|
||||||
utilities.send_reply(self, msg, 'Bitte gib ein Kommando ein.')
|
utilities.send_reply(msg, 'Bitte gib ein Kommando ein.')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
input = input:gsub('—', '--')
|
input = input:gsub('—', '--')
|
||||||
@ -25,7 +25,7 @@ function shell:action(msg, config)
|
|||||||
end
|
end
|
||||||
output = output:gsub('<pre>%\n', '<pre>')
|
output = output:gsub('<pre>%\n', '<pre>')
|
||||||
output = output:gsub('%\n%\n</pre>', '</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
|
end
|
||||||
|
|
||||||
return shell
|
return shell
|
||||||
|
@ -9,7 +9,7 @@ end
|
|||||||
|
|
||||||
function site_header:action(msg, config, matches)
|
function site_header:action(msg, config, matches)
|
||||||
if msg.from.id ~= config.admin then
|
if msg.from.id ~= config.admin then
|
||||||
utilities.send_reply(self, msg, config.errors.sudo)
|
utilities.send_reply(msg, config.errors.sudo)
|
||||||
end
|
end
|
||||||
|
|
||||||
local url = matches[2]
|
local url = matches[2]
|
||||||
@ -20,7 +20,7 @@ function site_header:action(msg, config, matches)
|
|||||||
end
|
end
|
||||||
local output = io.popen(input):read('*all')
|
local output = io.popen(input):read('*all')
|
||||||
output = '```\n' .. output .. '\n```'
|
output = '```\n' .. output .. '\n```'
|
||||||
utilities.send_reply(self, msg, output, true)
|
utilities.send_reply(msg, output, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
return site_header
|
return site_header
|
||||||
|
@ -30,8 +30,8 @@ end
|
|||||||
|
|
||||||
function soundcloud:action(msg, config, matches)
|
function soundcloud:action(msg, config, matches)
|
||||||
local text = soundcloud:send_soundcloud_info(matches[1])
|
local text = soundcloud:send_soundcloud_info(matches[1])
|
||||||
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
|
end
|
||||||
|
|
||||||
return soundcloud
|
return soundcloud
|
||||||
|
@ -7,9 +7,9 @@ speedtest.triggers = {
|
|||||||
|
|
||||||
function speedtest:action(msg, config, matches)
|
function speedtest:action(msg, config, matches)
|
||||||
local url = 'http://www.speedtest.net/result/'..matches[1]..'.png'
|
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)
|
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
|
end
|
||||||
|
|
||||||
return speedtest
|
return speedtest
|
@ -15,7 +15,7 @@ function spotify:get_track_data(track)
|
|||||||
return data
|
return data
|
||||||
end
|
end
|
||||||
|
|
||||||
function spotify:send_track_data(data, self, msg)
|
function spotify:send_track_data(data, msg)
|
||||||
local name = data.name
|
local name = data.name
|
||||||
local album = data.album.name
|
local album = data.album.name
|
||||||
local artist = data.artists[1].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..')_'
|
local text = '*'..name..'* von *'..artist..'* aus dem Album *'..album..'* _('..duration..')_'
|
||||||
if preview then
|
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')
|
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
|
return
|
||||||
else
|
else
|
||||||
utilities.send_reply(self, msg, text, true)
|
utilities.send_reply(msg, text, true)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function spotify:action(msg, config, matches)
|
function spotify:action(msg, config, matches)
|
||||||
local data = spotify:get_track_data(matches[1])
|
local data = spotify:get_track_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
|
||||||
spotify:send_track_data(data, self, msg)
|
spotify:send_track_data(data, msg)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ function stats:chat_stats(chat_id)
|
|||||||
return text
|
return text
|
||||||
end
|
end
|
||||||
|
|
||||||
function stats:pre_process(msg, self)
|
function stats:pre_process(msg)
|
||||||
if msg.left_chat_member then
|
if msg.left_chat_member then
|
||||||
-- delete user from redis set, but keep message count
|
-- delete user from redis set, but keep message count
|
||||||
local hash = 'chat:'..msg.chat.id..':users'
|
local hash = 'chat:'..msg.chat.id..':users'
|
||||||
@ -126,21 +126,21 @@ function stats:action(msg, config, matches)
|
|||||||
|
|
||||||
if not matches[2] then
|
if not matches[2] then
|
||||||
if msg.chat.type == 'private' 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
|
return
|
||||||
else
|
else
|
||||||
local chat_id = msg.chat.id
|
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
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if matches[2] == "chat" then
|
if matches[2] == "chat" then
|
||||||
if msg.from.id ~= config.admin then
|
if msg.from.id ~= config.admin then
|
||||||
utilities.send_reply(self, msg, config.errors.sudo)
|
utilities.send_reply(msg, config.errors.sudo)
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
utilities.send_reply(self, msg, stats:chat_stats(matches[3]), 'HTML')
|
utilities.send_reply(msg, stats:chat_stats(matches[3]), 'HTML')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -35,7 +35,7 @@ function steam:price_info(data)
|
|||||||
return price
|
return price
|
||||||
end
|
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 description = string.sub(unescape(data.about_the_game:gsub("%b<>", "")), 1, DESC_LENTH) .. '...'
|
||||||
local title = data.name
|
local title = data.name
|
||||||
local price = steam:price_info(data.price_overview)
|
local price = steam:price_info(data.price_overview)
|
||||||
@ -47,12 +47,12 @@ end
|
|||||||
|
|
||||||
function steam:action(msg)
|
function steam:action(msg)
|
||||||
local data = steam:get_steam_data(matches[1])
|
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)
|
local text, image_url = steam:send_steam_data(data, msg)
|
||||||
utilities.send_typing(self, msg.chat.id, 'upload_photo')
|
utilities.send_typing(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_photo(msg.chat.id, download_to_file(image_url, matches[1]..'.jpg'), nil, msg.message_id)
|
||||||
utilities.send_reply(self, msg, text, true)
|
utilities.send_reply(msg, text, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
return steam
|
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