diff --git a/otouto/plugins/about.lua b/otouto/plugins/about.lua index e212dce..a9fcf57 100755 --- a/otouto/plugins/about.lua +++ b/otouto/plugins/about.lua @@ -16,13 +16,15 @@ function about:action(msg, config) -- other plugins. 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@'..self.info.username:lower()) - or msg.text_lower:match('^'..config.cmd_pat..'start') then - utilities.send_message(self, msg.chat.id, output, true) + or msg.text_lower:match('^'..config.cmd_pat..'start') + then + utilities.send_message(self, msg.chat.id, output, true, nil, true) return end diff --git a/otouto/plugins/administration.lua b/otouto/plugins/administration.lua index 393b334..6785785 100644 --- a/otouto/plugins/administration.lua +++ b/otouto/plugins/administration.lua @@ -1,6 +1,6 @@ --[[ administration.lua - Version 1.10 + Version 1.10.5 Part of the otouto project. © 2016 topkecleon GNU General Public License, version 2 @@ -13,19 +13,6 @@ 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 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. @@ -42,6 +29,9 @@ 1.10.4 - Kick notifications now include user IDs. Errors are silenced. /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') @@ -489,29 +479,33 @@ function administration.init_command(self_, config) }, { -- /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, 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) - local output = '' - for _,v in ipairs(self.database.administration.activity) do + action = function(self, msg, _, config) + local input = utilities.input(msg.text) + local search_res = '' + local grouplist = '' + for i,v in ipairs(self.database.administration.activity) do local group = self.database.administration.groups[v] - if not group.flags[1] then -- no unlisted groups - if group.link then - output = output .. '• [' .. utilities.md_escape(group.name) .. '](' .. group.link .. ')\n' - else - output = output .. '• ' .. group.name .. '\n' + if (not group.flags[1]) and group.link then -- no unlisted or unlinked groups + grouplist = grouplist .. '• [' .. utilities.md_escape(group.name) .. '](' .. group.link .. ')\n' + if input and string.match(group.name:lower(), input:lower()) then + search_res = search_res .. '• [' .. utilities.md_escape(group.name) .. '](' .. group.link .. ')\n' end end end - if output == '' then - output = 'There are currently no listed groups.' + local output + if search_res ~= '' then + output = '*Groups matching* _' .. input .. '_ *:*\n' .. search_res + elseif grouplist ~= '' then + output = '*Groups:*\n' .. grouplist else - output = '*Groups:*\n' .. output + output = 'There are currently no listed groups.' end utilities.send_message(self, msg.chat.id, output, true, nil, true) end @@ -771,7 +765,7 @@ function administration.init_command(self_, config) }, { -- /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 ', privilege = 2, @@ -780,15 +774,19 @@ function administration.init_command(self_, config) action = function(self, msg, group, config) 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 + quoted = msg.reply_to_message.from.name end if input then if input == '--' or input == utilities.char.em_dash then group.motd = nil utilities.send_reply(self, msg, 'The MOTD has been cleared.') 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 local output = '*MOTD for ' .. msg.chat.title .. ':*\n' .. input utilities.send_message(self, msg.chat.id, output, true, nil, true)