administration.lua:
Version 1.2. Rules are now in a table. Automatic migration until 1.4. New command: changerule /changerule <i> <rule> Change a rule. Use "/changerule 1 --" to delete rule 1. ahelp: Only displays commands the user can use. Attempts to PM before group. desc: Now displays group's flags and their "short" descs. Attemps to PM before group. antisquig: Second RTL character added to, and Strict. dilbert.lua: New command: dilbert /dilbert [YYYY-MM-DD] Returns a date's or the latest Dilbert strip. Caches strips so they are not downloaded more than once. gImages.lua & youtube.lua: Title now displayed for links. The "zero-width non-joiner" was a stupid idea. help.lua: Commands now properly bulleted. utilities.lua: download_file(): Now allows for specification of a path instead of /tmp/.
This commit is contained in:
parent
12c442d870
commit
ddaf304460
@ -14,12 +14,13 @@ end
|
|||||||
sendRequest = function(url)
|
sendRequest = function(url)
|
||||||
|
|
||||||
local dat, res = HTTPS.request(url)
|
local dat, res = HTTPS.request(url)
|
||||||
local tab = JSON.decode(dat)
|
|
||||||
|
|
||||||
if res ~= 200 then
|
if res ~= 200 then
|
||||||
return false, res
|
return false, res
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local tab = JSON.decode(dat)
|
||||||
|
|
||||||
if not tab.ok then
|
if not tab.ok then
|
||||||
return false, tab.description
|
return false, tab.description
|
||||||
end
|
end
|
||||||
|
@ -11,7 +11,7 @@ local action = function(msg)
|
|||||||
-- other plugins.
|
-- other plugins.
|
||||||
if msg.forward_from then return end
|
if msg.forward_from then return end
|
||||||
|
|
||||||
local message = config.about_text .. '\nBased on otouto v'..version..' by topkecleon.\notouto v3 is licensed under the GPLv2.\ngithub.com/topkecleon/otouto'
|
local message = config.about_text .. '\nBased on otouto v'..version..' by topkecleon.\notouto is licensed under the GPLv2.\ngithub.com/topkecleon/otouto'
|
||||||
|
|
||||||
if msg.new_chat_participant and msg.new_chat_participant.id == bot.id then
|
if msg.new_chat_participant and msg.new_chat_participant.id == bot.id then
|
||||||
sendMessage(msg.chat.id, message, true)
|
sendMessage(msg.chat.id, message, true)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--[[
|
--[[
|
||||||
administration.lua
|
administration.lua
|
||||||
Version 1.1
|
Version 1.2
|
||||||
Part of the otouto project.
|
Part of the otouto project.
|
||||||
© 2016 topkecleon <drew@otou.to>
|
© 2016 topkecleon <drew@otou.to>
|
||||||
GNU General Public License, version 2
|
GNU General Public License, version 2
|
||||||
@ -11,8 +11,12 @@
|
|||||||
|
|
||||||
Important notices about updates will be here!
|
Important notices about updates will be here!
|
||||||
Remember to load this before blacklist.lua.
|
Remember to load this before blacklist.lua.
|
||||||
|
|
||||||
The global banlist has been merged with the blacklist. This merge will occur
|
The global banlist has been merged with the blacklist. This merge will occur
|
||||||
automatically on versions 1.1 and 1.2.
|
automatically on versions 1.1 and 1.2.
|
||||||
|
|
||||||
|
Group rules will now be stored in tables rather than pre-numbered strings.
|
||||||
|
Automatic migration will be in effect in versions 1.2 and 1.3.
|
||||||
]]--
|
]]--
|
||||||
|
|
||||||
-- Build the administration db if nonexistent.
|
-- Build the administration db if nonexistent.
|
||||||
@ -36,6 +40,18 @@ if database.administration.global.bans then
|
|||||||
database.administration.global.bans = nil
|
database.administration.global.bans = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Migration code: Remove this in v1.4.
|
||||||
|
-- Rule lists have been converted from strings to tables.
|
||||||
|
for k,v in pairs(database.administration) do
|
||||||
|
if type(v.rules) == 'string' then
|
||||||
|
local t = {}
|
||||||
|
for l in v.rules:gmatch('(.-)\n') do
|
||||||
|
table.insert(t, l:sub(6))
|
||||||
|
end
|
||||||
|
v.rules = t
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local sender = dofile('lua-tg/sender.lua')
|
local sender = dofile('lua-tg/sender.lua')
|
||||||
tg = sender(localhost, config.cli_port)
|
tg = sender(localhost, config.cli_port)
|
||||||
local last_admin_cron = os.date('%M', os.time())
|
local last_admin_cron = os.date('%M', os.time())
|
||||||
@ -44,26 +60,30 @@ local flags = {
|
|||||||
[1] = {
|
[1] = {
|
||||||
name = 'unlisted',
|
name = 'unlisted',
|
||||||
desc = 'Removes this group from the group listing.',
|
desc = 'Removes this group from the group listing.',
|
||||||
|
short = 'This group is unlisted.',
|
||||||
enabled = 'This group is no longer listed in /groups.',
|
enabled = 'This group is no longer listed in /groups.',
|
||||||
disabled = 'This group is now listed in /groups.'
|
disabled = 'This group is now listed in /groups.'
|
||||||
},
|
},
|
||||||
[2] = {
|
[2] = {
|
||||||
name = 'antisquig',
|
name = 'antisquig',
|
||||||
desc = 'Automatically removes users who post Arabic script or RTL characters.',
|
desc = 'Automatically removes users who post Arabic script or RTL characters.',
|
||||||
|
short = 'This group does not allow Arabic script or RTL characters.',
|
||||||
enabled = 'Users will now be removed automatically for posting Arabic script and/or RTL characters.',
|
enabled = 'Users will now be removed automatically for posting Arabic script and/or RTL characters.',
|
||||||
disabled = 'Users will no longer be removed automatically for posting Arabic script and/or RTL characters..',
|
disabled = 'Users will no longer be removed automatically for posting Arabic script and/or RTL characters..',
|
||||||
kicked = 'You were kicked from GROUPNAME for posting Arabic script and/or RTL characters.'
|
kicked = 'You were automatically kicked from GROUPNAME for posting Arabic script and/or RTL characters.'
|
||||||
},
|
},
|
||||||
[3] = {
|
[3] = {
|
||||||
name = 'antisquig Strict',
|
name = 'antisquig Strict',
|
||||||
desc = 'Automatically removes users whose names contain Arabic script or RTL characters.',
|
desc = 'Automatically removes users whose names contain Arabic script or RTL characters.',
|
||||||
|
short = 'This group does not allow users whose names contain Arabic script or RTL characters.',
|
||||||
enabled = 'Users whose names contain Arabic script and/or RTL characters will now be removed automatically.',
|
enabled = 'Users whose names contain Arabic script and/or RTL characters will now be removed automatically.',
|
||||||
disabled = 'Users whose names contain Arabic script and/or RTL characters will no longer be removed automatically.',
|
disabled = 'Users whose names contain Arabic script and/or RTL characters will no longer be removed automatically.',
|
||||||
kicked = 'You were kicked from GROUPNAME for having a name which contains Arabic script and/or RTL characters.'
|
kicked = 'You were automatically kicked from GROUPNAME for having a name which contains Arabic script and/or RTL characters.'
|
||||||
},
|
},
|
||||||
[4] = {
|
[4] = {
|
||||||
name = 'antibot',
|
name = 'antibot',
|
||||||
desc = 'Prevents the addition of bots by non-moderators. Only useful in non-supergroups.',
|
desc = 'Prevents the addition of bots by non-moderators. Only useful in non-supergroups.',
|
||||||
|
short = 'This group does not allow users to add bots.',
|
||||||
enabled = 'Non-moderators will no longer be able to add bots.',
|
enabled = 'Non-moderators will no longer be able to add bots.',
|
||||||
disabled = 'Non-moderators will now be able to add bots.'
|
disabled = 'Non-moderators will now be able to add bots.'
|
||||||
}
|
}
|
||||||
@ -182,7 +202,18 @@ local get_desc = function(chat_id)
|
|||||||
output = output .. '\n\n*Message of the Day:*\n' .. group.motd
|
output = output .. '\n\n*Message of the Day:*\n' .. group.motd
|
||||||
end
|
end
|
||||||
if group.rules then
|
if group.rules then
|
||||||
output = output .. '\n\n*Rules:*\n' .. group.rules
|
output = output .. '\n\n*Rules:*\n'
|
||||||
|
for i,v in ipairs(group.rules) do
|
||||||
|
output = output .. '*' .. i .. '.* ' .. v .. '\n'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if group.flags then
|
||||||
|
output = output .. '\n*Flags:*\n'
|
||||||
|
for i = 1, #flags do
|
||||||
|
if group.flags[i] then
|
||||||
|
output = output .. '• ' .. flags[i].short .. '\n'
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
return output
|
return output
|
||||||
|
|
||||||
@ -193,7 +224,8 @@ local commands = {
|
|||||||
{ -- antisquig
|
{ -- antisquig
|
||||||
triggers = {
|
triggers = {
|
||||||
'[\216-\219][\128-\191]', -- arabic
|
'[\216-\219][\128-\191]', -- arabic
|
||||||
'' -- rtl
|
'', -- rtl
|
||||||
|
'', -- other rtl
|
||||||
},
|
},
|
||||||
|
|
||||||
privilege = 0,
|
privilege = 0,
|
||||||
@ -235,7 +267,7 @@ local commands = {
|
|||||||
|
|
||||||
-- antisquig Strict
|
-- antisquig Strict
|
||||||
if group.flags[3] == true then
|
if group.flags[3] == true then
|
||||||
if msg.from.name:match('[\216-\219][\128-\191]') or msg.from.name:match('') then
|
if msg.from.name:match('[\216-\219][\128-\191]') or msg.from.name:match('') or msg.from.name:match('') then
|
||||||
kick_user(msg.from.id, msg.chat.id)
|
kick_user(msg.from.id, msg.chat.id)
|
||||||
sendMessage(msg.from.id, flags[3].kicked:gsub('GROUPNAME', msg.chat.title))
|
sendMessage(msg.from.id, flags[3].kicked:gsub('GROUPNAME', msg.chat.title))
|
||||||
return
|
return
|
||||||
@ -260,7 +292,7 @@ local commands = {
|
|||||||
|
|
||||||
-- antisquig Strict
|
-- antisquig Strict
|
||||||
if group.flags[3] == true then
|
if group.flags[3] == true then
|
||||||
if msg.new_chat_participant.name:match('[\216-\219][\128-\191]') or msg.new_chat_participant.name:match('') then
|
if msg.new_chat_participant.name:match('[\216-\219][\128-\191]') or msg.new_chat_participant.name:match('') or msg.new_chat_participant.name:match('') then
|
||||||
kick_user(msg.new_chat_participant.id, msg.chat.id)
|
kick_user(msg.new_chat_participant.id, msg.chat.id)
|
||||||
sendMessage(msg.new_chat_participant.id, flags[3].kicked:gsub('GROUPNAME', msg.chat.title))
|
sendMessage(msg.new_chat_participant.id, flags[3].kicked:gsub('GROUPNAME', msg.chat.title))
|
||||||
return
|
return
|
||||||
@ -275,9 +307,7 @@ local commands = {
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
local output = get_desc(msg.chat.id)
|
local output = get_desc(msg.chat.id)
|
||||||
if not sendMessage(msg.new_chat_participant.id, output, true, nil, true) then
|
sendMessage(msg.new_chat_participant.id, output, true, nil, true)
|
||||||
sendMessage(msg.chat.id, output, true, nil, true)
|
|
||||||
end
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -360,7 +390,18 @@ local commands = {
|
|||||||
interior = true,
|
interior = true,
|
||||||
|
|
||||||
action = function(msg)
|
action = function(msg)
|
||||||
sendMessage(msg.chat.id, database.administration.global.help, true, nil, true)
|
local rank = get_rank(msg.from.id, msg.chat.id)
|
||||||
|
local output = '*Commands for ' .. ranks[rank] .. ':*\n'
|
||||||
|
for i = 1, rank do
|
||||||
|
for ind, val in ipairs(database.administration.global.help[i]) do
|
||||||
|
output = output .. '• /' .. val .. '\n'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if sendMessage(msg.from.id, output, true, nil, true) then
|
||||||
|
sendReply(msg, 'I have sent you the requested information in a private message.')
|
||||||
|
else
|
||||||
|
sendMessage(msg.chat.id, output, true, nil, true)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -412,8 +453,12 @@ local commands = {
|
|||||||
|
|
||||||
action = function(msg)
|
action = function(msg)
|
||||||
local output = get_desc(msg.chat.id)
|
local output = get_desc(msg.chat.id)
|
||||||
|
if sendMessage(msg.from.id, output, true, nil, true) then
|
||||||
|
sendReply(msg, 'I have sent you the requested information in a private message.')
|
||||||
|
else
|
||||||
sendMessage(msg.chat.id, output, true, nil, true)
|
sendMessage(msg.chat.id, output, true, nil, true)
|
||||||
end
|
end
|
||||||
|
end
|
||||||
},
|
},
|
||||||
|
|
||||||
{ -- rules
|
{ -- rules
|
||||||
@ -428,7 +473,10 @@ local commands = {
|
|||||||
action = function(msg)
|
action = function(msg)
|
||||||
local output = 'No rules have been set for ' .. msg.chat.title .. '.'
|
local output = 'No rules have been set for ' .. msg.chat.title .. '.'
|
||||||
if database.administration[msg.chat.id_str].rules then
|
if database.administration[msg.chat.id_str].rules then
|
||||||
output = '*Rules for* _' .. msg.chat.title .. '_ *:*\n' .. database.administration[msg.chat.id_str].rules
|
output = '*Rules for* _' .. msg.chat.title .. '_ *:*\n'
|
||||||
|
for i,v in ipairs(database.administration[msg.chat.id_str].rules) do
|
||||||
|
output = output .. '*' .. i .. '.* ' .. v .. '\n'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
sendMessage(msg.chat.id, output, true, nil, true)
|
sendMessage(msg.chat.id, output, true, nil, true)
|
||||||
end
|
end
|
||||||
@ -574,6 +622,59 @@ local commands = {
|
|||||||
end
|
end
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ -- changerule
|
||||||
|
triggers = {
|
||||||
|
'^/changerule',
|
||||||
|
'^/changerule@' .. bot.username
|
||||||
|
},
|
||||||
|
|
||||||
|
command = 'changerule <i> <newrule>',
|
||||||
|
privilege = 3,
|
||||||
|
interior = true,
|
||||||
|
|
||||||
|
action = function(msg)
|
||||||
|
local usage = 'usage: `/changerule <i> <newrule>`\n`/changerule <i> -- `deletes.'
|
||||||
|
local input = msg.text:input()
|
||||||
|
if not input then
|
||||||
|
sendMessage(msg.chat.id, usage, true, msg.message_id, true)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local rule_num = input:match('^%d+')
|
||||||
|
if not rule_num then
|
||||||
|
local output = 'Please specify which rule you want to change.\n' .. usage
|
||||||
|
sendMessage(msg.chat.id, output, true, msg.message_id, true)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
rule_num = tonumber(rule_num)
|
||||||
|
local rule_new = input:input()
|
||||||
|
if not rule_new then
|
||||||
|
local output = 'Please specify the new rule.\n' .. usage
|
||||||
|
sendMessage(msg.chat.id, output, true, msg.message_id, true)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if not database.administration[msg.chat.id_str].rules then
|
||||||
|
local output = 'Sorry, there are no rules to change. Please use /setrules.\n' .. usage
|
||||||
|
sendMessage(msg.chat.id, output, true, msg.message_id, true)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if not database.administration[msg.chat.id_str].rules[rule_num] then
|
||||||
|
rule_num = #database.administration[msg.chat.id_str].rules + 1
|
||||||
|
end
|
||||||
|
if rule_new == '--' or rule_new == '—' then
|
||||||
|
if database.administration[msg.chat.id_str].rules[rule_num] then
|
||||||
|
table.remove(database.administration[msg.chat.id_str].rules, rule_num)
|
||||||
|
sendReply(msg, 'That rule has been deleted.')
|
||||||
|
else
|
||||||
|
sendReply(msg, 'There is no rule with that number.')
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
database.administration[msg.chat.id_str].rules[rule_num] = rule_new
|
||||||
|
local output = '*' .. rule_num .. '*. ' .. rule_new
|
||||||
|
sendMessage(msg.chat.id, output, true, nil, true)
|
||||||
|
end
|
||||||
|
},
|
||||||
|
|
||||||
{ -- setrules
|
{ -- setrules
|
||||||
triggers = {
|
triggers = {
|
||||||
'^/setrules[@'..bot.username..']*'
|
'^/setrules[@'..bot.username..']*'
|
||||||
@ -589,15 +690,15 @@ local commands = {
|
|||||||
sendReply(msg, '/setrules [rule]\n<rule>\n[rule]\n...')
|
sendReply(msg, '/setrules [rule]\n<rule>\n[rule]\n...')
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
database.administration[msg.chat.id_str].rules = {}
|
||||||
input = input:trim() .. '\n'
|
input = input:trim() .. '\n'
|
||||||
local output = ''
|
local output = '*Rules for* _' .. msg.chat.title .. '_ *:*\n'
|
||||||
local i = 0
|
local i = 1
|
||||||
for m in input:gmatch('(.-)\n') do
|
for l in input:gmatch('(.-)\n') do
|
||||||
|
output = output .. '*' .. i .. '.* ' .. l .. '\n'
|
||||||
i = i + 1
|
i = i + 1
|
||||||
output = output .. '*' .. i .. '.* ' .. m:trim() .. '\n'
|
table.insert(database.administration[msg.chat.id_str].rules, l:trim())
|
||||||
end
|
end
|
||||||
database.administration[msg.chat.id_str].rules = output
|
|
||||||
output = '*Rules for* _' .. msg.chat.title .. '_ *:*\n' .. output
|
|
||||||
sendMessage(msg.chat.id, output, true, nil, true)
|
sendMessage(msg.chat.id, output, true, nil, true)
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
@ -665,7 +766,7 @@ local commands = {
|
|||||||
local output = '*Flags for* _' .. msg.chat.title .. '_ *:*\n'
|
local output = '*Flags for* _' .. msg.chat.title .. '_ *:*\n'
|
||||||
for i,v in ipairs(flags) do
|
for i,v in ipairs(flags) do
|
||||||
local status = database.administration[msg.chat.id_str].flags[i] or false
|
local status = database.administration[msg.chat.id_str].flags[i] or false
|
||||||
output = output .. '`[' .. i .. ']` *' .. v.name .. '* = `' .. tostring(status) .. '`\n• ' .. v.desc .. '\n'
|
output = output .. '`[' .. i .. ']` *' .. v.name .. '*` = ' .. tostring(status) .. '`\n• ' .. v.desc .. '\n'
|
||||||
end
|
end
|
||||||
sendMessage(msg.chat.id, output, true, nil, true)
|
sendMessage(msg.chat.id, output, true, nil, true)
|
||||||
return
|
return
|
||||||
@ -984,17 +1085,16 @@ for i,v in ipairs(commands) do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Generate help text, and store it so we don't have to use a global variable.
|
database.administration.global.help = {}
|
||||||
local help_text = ''
|
for i,v in pairs(ranks) do
|
||||||
for i = 1, 5 do
|
database.administration.global.help[i] = {}
|
||||||
help_text = help_text .. '*' .. ranks[i] .. ':*\n'
|
end
|
||||||
for k,v in pairs(commands) do
|
for i,v in ipairs(commands) do
|
||||||
if v.privilege == i and v.command then
|
if v.command then
|
||||||
help_text = help_text .. '• /' .. v.command .. '\n'
|
table.insert(database.administration.global.help[v.privilege], v.command)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
database.administration.global.help = help_text
|
|
||||||
|
|
||||||
local action = function(msg) -- wee nesting
|
local action = function(msg) -- wee nesting
|
||||||
for i,v in ipairs(commands) do
|
for i,v in ipairs(commands) do
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
local command = 'apod [query]'
|
local command = 'apod [date]'
|
||||||
local doc = [[```
|
local doc = [[```
|
||||||
/apod [query]
|
/apod [query]
|
||||||
Returns the Astronomy Picture of the Day.
|
Returns the Astronomy Picture of the Day.
|
||||||
|
46
plugins/dilbert.lua
Normal file
46
plugins/dilbert.lua
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
dilbert = dilbert or {}
|
||||||
|
|
||||||
|
local command = 'dilbert [date]'
|
||||||
|
local doc = [[```
|
||||||
|
/dilbert [YYYY-MM-DD]
|
||||||
|
Returns the latest Dilbert strip or that of the provided date.
|
||||||
|
Dates before the first strip will return the first strip. Dates after the last trip will return the last strip.
|
||||||
|
Source: dilbert.com
|
||||||
|
```]]
|
||||||
|
|
||||||
|
local triggers = {
|
||||||
|
'^/dilbert[@'..bot.username..']*'
|
||||||
|
}
|
||||||
|
|
||||||
|
local action = function(msg)
|
||||||
|
|
||||||
|
sendChatAction(msg.chat.id, 'upload_photo')
|
||||||
|
|
||||||
|
local input = msg.text:input()
|
||||||
|
if not input then input = os.date('%F') end
|
||||||
|
if not input:match('^%d%d%d%d%-%d%d%-%d%d$') then input = os.date('%F') end
|
||||||
|
|
||||||
|
local url = 'http://dilbert.com/strip/' .. URL.escape(input)
|
||||||
|
local str, res = HTTP.request(url)
|
||||||
|
if res ~= 200 then
|
||||||
|
sendReply(msg, config.errors.connection)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if not dilbert[input] then
|
||||||
|
local strip_url = str:match('<meta property="og:image" content="(.-)"/>')
|
||||||
|
dilbert[input] = download_file(strip_url, '/tmp/' .. input .. '.gif')
|
||||||
|
end
|
||||||
|
|
||||||
|
local strip_title = str:match('<meta property="article:publish_date" content="(.-)"/>')
|
||||||
|
|
||||||
|
sendPhoto(msg.chat.id, dilbert[input], strip_title)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
command = command,
|
||||||
|
doc = doc,
|
||||||
|
triggers = triggers,
|
||||||
|
action = action
|
||||||
|
}
|
@ -58,11 +58,12 @@ local action = function(msg)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local i = math.random(jdat.queries.request[1].count)
|
local i = math.random(jdat.queries.request[1].count)
|
||||||
local result = jdat.items[i].link
|
local img_url = jdat.items[i].link
|
||||||
local output = '[]('..result..')'
|
local img_title = jdat.items[i].title
|
||||||
|
local output = '[' .. img_title .. '](' .. img_url .. ')'
|
||||||
|
|
||||||
|
|
||||||
if string.match(msg.text, '^/i[mage]*nsfw') then
|
if msg.text:match('nsfw') then
|
||||||
sendReply(msg, result)
|
sendReply(msg, result)
|
||||||
else
|
else
|
||||||
sendMessage(msg.chat.id, output, false, nil, true)
|
sendMessage(msg.chat.id, output, false, nil, true)
|
||||||
|
@ -5,13 +5,13 @@ local help_text = '*Available commands:*'
|
|||||||
|
|
||||||
for i,v in ipairs(plugins) do
|
for i,v in ipairs(plugins) do
|
||||||
if v.command then
|
if v.command then
|
||||||
help_text = help_text .. '\n /' .. v.command:gsub('%[', '\\[')
|
help_text = help_text .. '\n• /' .. v.command:gsub('%[', '\\[')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
help_text = help_text .. [[
|
help_text = help_text .. [[
|
||||||
|
|
||||||
/help <command>
|
• /help <command>
|
||||||
Arguments: <required> \[optional]
|
Arguments: <required> \[optional]
|
||||||
]]
|
]]
|
||||||
|
|
||||||
|
@ -46,7 +46,10 @@ local action = function(msg)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local i = math.random(jdat.pageInfo.resultsPerPage)
|
local i = math.random(jdat.pageInfo.resultsPerPage)
|
||||||
local output = '[](https://www.youtube.com/watch?v=' .. jdat.items[i].id.videoId .. ')'
|
local vid_url = 'https://www.youtube.com/watch?v=' .. jdat.items[i].id.videoId
|
||||||
|
local vid_title = jdat.items[i].snippet.title
|
||||||
|
vid_title = vid_title:gsub('%(.+%)',''):gsub('%[.+%]','')
|
||||||
|
local output = '[' .. vid_title .. '](' .. vid_url .. ')'
|
||||||
|
|
||||||
sendMessage(msg.chat.id, output, false, nil, true)
|
sendMessage(msg.chat.id, output, false, nil, true)
|
||||||
|
|
||||||
|
@ -187,14 +187,12 @@ download_file = function(url, filename)
|
|||||||
|
|
||||||
if code ~= 200 then return false end
|
if code ~= 200 then return false end
|
||||||
|
|
||||||
filename = filename or os.time()
|
filename = filename or '/tmp/' .. os.time()
|
||||||
|
|
||||||
local file_path = '/tmp/'..filename
|
local file = io.open(filename, 'w+')
|
||||||
|
|
||||||
file = io.open(file_path, 'w+')
|
|
||||||
file:write(table.concat(respbody))
|
file:write(table.concat(respbody))
|
||||||
file:close()
|
file:close()
|
||||||
|
|
||||||
return file_path
|
return filename
|
||||||
|
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user