administration.lua 1.10.5

/groups now supports queries. Added /setqotd trigger/behavior to /setmotd.
This commit is contained in:
topkecleon 2016-06-19 04:36:33 -04:00
parent fc1208af03
commit eadf593ed7
2 changed files with 35 additions and 35 deletions

View File

@ -16,13 +16,15 @@ function about:action(msg, config)
-- other plugins. -- other plugins.
if msg.forward_from then return end if msg.forward_from then return end
local output = config.about_text .. '\nBased on otouto v'..bot.version..' by topkecleon.' local output = config.about_text .. '\nBased on [otouto](http://github.com/topkecleon/otouto) v'..bot.version..' by topkecleon.'
if (msg.new_chat_participant and msg.new_chat_participant.id == self.info.id) if
(msg.new_chat_participant and msg.new_chat_participant.id == self.info.id)
or msg.text_lower:match('^'..config.cmd_pat..'about') or msg.text_lower:match('^'..config.cmd_pat..'about')
or msg.text_lower:match('^'..config.cmd_pat..'about@'..self.info.username:lower()) or msg.text_lower:match('^'..config.cmd_pat..'about@'..self.info.username:lower())
or msg.text_lower:match('^'..config.cmd_pat..'start') then or msg.text_lower:match('^'..config.cmd_pat..'start')
utilities.send_message(self, msg.chat.id, output, true) then
utilities.send_message(self, msg.chat.id, output, true, nil, true)
return return
end end

View File

@ -1,6 +1,6 @@
--[[ --[[
administration.lua administration.lua
Version 1.10 Version 1.10.5
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
@ -13,19 +13,6 @@
Important notices about updates will be here! Important notices about updates will be here!
1.9 - Added flag antihammer. Groups with antihammer enabled will not be
affected by global bans. However, users who are hammer'd from an anti-
hammer group will also be banned locally. Added autobanning after (default)
3 autokicks. Threshold onfigurable with antiflood. Autokick counters reset
within twenty-four hours. Merged antisquig action into generic. There is no
automatic migration; simply add the following to database.administration:
autokick_timer = 0
groups[*].flags[6] = false
groups[*].autoban = 3
groups[*].autokicks = {}b
1.9.1 - Returned to non-toggled promotions/bans (too many complaints!).
1.10 - Added /ahelp $command support. No migration required. All actions 1.10 - Added /ahelp $command support. No migration required. All actions
have been reworked to be more elegant. Style has been slightly changed (no have been reworked to be more elegant. Style has been slightly changed (no
more weak-looking, italic group names). Added some (but not many) comments. more weak-looking, italic group names). Added some (but not many) comments.
@ -42,6 +29,9 @@
1.10.4 - Kick notifications now include user IDs. Errors are silenced. 1.10.4 - Kick notifications now include user IDs. Errors are silenced.
/flags can now be used with multiple arguments, similar to /gadd. /flags can now be used with multiple arguments, similar to /gadd.
1.10.5 - /groups now supports searching for groups. /setqotd can set a
quoted MOTD.
]]-- ]]--
local JSON = require('dkjson') local JSON = require('dkjson')
@ -489,29 +479,33 @@ function administration.init_command(self_, config)
}, },
{ -- /groups { -- /groups
triggers = utilities.triggers(self_.info.username, config.cmd_pat):t('groups').table, triggers = utilities.triggers(self_.info.username, config.cmd_pat):t('groups', true).table,
command = 'groups', command = 'groups \\[query]',
privilege = 1, privilege = 1,
interior = false, interior = false,
doc = 'Returns a list of administrated groups.', doc = 'Returns a list of groups matching the query, or a list of all administrated groups.',
action = function(self, msg, group, config) action = function(self, msg, _, config)
local output = '' local input = utilities.input(msg.text)
for _,v in ipairs(self.database.administration.activity) do local search_res = ''
local grouplist = ''
for i,v in ipairs(self.database.administration.activity) do
local group = self.database.administration.groups[v] local group = self.database.administration.groups[v]
if not group.flags[1] then -- no unlisted groups if (not group.flags[1]) and group.link then -- no unlisted or unlinked groups
if group.link then grouplist = grouplist .. '• [' .. utilities.md_escape(group.name) .. '](' .. group.link .. ')\n'
output = output .. '• [' .. utilities.md_escape(group.name) .. '](' .. group.link .. ')\n' if input and string.match(group.name:lower(), input:lower()) then
else search_res = search_res .. '• [' .. utilities.md_escape(group.name) .. '](' .. group.link .. ')\n'
output = output .. '' .. group.name .. '\n'
end end
end end
end end
if output == '' then local output
output = 'There are currently no listed groups.' if search_res ~= '' then
output = '*Groups matching* _' .. input .. '_ *:*\n' .. search_res
elseif grouplist ~= '' then
output = '*Groups:*\n' .. grouplist
else else
output = '*Groups:*\n' .. output output = 'There are currently no listed groups.'
end end
utilities.send_message(self, msg.chat.id, output, true, nil, true) utilities.send_message(self, msg.chat.id, output, true, nil, true)
end end
@ -771,7 +765,7 @@ function administration.init_command(self_, config)
}, },
{ -- /setmotd { -- /setmotd
triggers = utilities.triggers(self_.info.username, config.cmd_pat):t('setmotd', true).table, triggers = utilities.triggers(self_.info.username, config.cmd_pat):t('setmotd', true):t('setqotd', true).table,
command = 'setmotd <motd>', command = 'setmotd <motd>',
privilege = 2, privilege = 2,
@ -780,15 +774,19 @@ function administration.init_command(self_, config)
action = function(self, msg, group, config) action = function(self, msg, group, config)
local input = utilities.input(msg.text) local input = utilities.input(msg.text)
if not input and msg.reply_to_message and msg.reply_to_message.text:len() > 0 then local quoted = msg.from.name
if msg.reply_to_message and #msg.reply_to_message.text > 0 then
input = msg.reply_to_message.text input = msg.reply_to_message.text
quoted = msg.reply_to_message.from.name
end end
if input then if input then
if input == '--' or input == utilities.char.em_dash then if input == '--' or input == utilities.char.em_dash then
group.motd = nil group.motd = nil
utilities.send_reply(self, msg, 'The MOTD has been cleared.') utilities.send_reply(self, msg, 'The MOTD has been cleared.')
else else
input = utilities.trim(input) if msg.text:match('^/setqotd') then
input = '_' .. utilities.md_escape(input) .. '_\n - ' .. utilities.md_escape(quoted)
end
group.motd = input group.motd = input
local output = '*MOTD for ' .. msg.chat.title .. ':*\n' .. input local output = '*MOTD for ' .. msg.chat.title .. ':*\n' .. input
utilities.send_message(self, msg.chat.id, output, true, nil, true) utilities.send_message(self, msg.chat.id, output, true, nil, true)