diff --git a/plugins/administration.lua b/plugins/administration.lua index 2a2d249..1832cc5 100644 --- a/plugins/administration.lua +++ b/plugins/administration.lua @@ -1,6 +1,6 @@ --[[ administration.lua - Version 1.6 + Version 1.6.1 Part of the otouto project. © 2016 topkecleon GNU General Public License, version 2 @@ -150,33 +150,59 @@ local get_target = function(msg) end +local mod_format = function(id) + id = tostring(id) + local user = database.users[id] or { first_name = 'Unknown' } + local name = user.first_name + if user.last_name then name = user.first_name .. ' ' .. user.last_name end + name = markdown_escape(name) + local output = '• ' .. name .. ' `[' .. id .. ']`\n' + return output +end + local get_desc = function(chat_id) local group = database.administration.groups[tostring(chat_id)] - local output + local t = {} if group.link then - output = '*Welcome to* [' .. group.name .. '](' .. group.link .. ')*!*' + table.insert(t, '*Welcome to* [' .. group.name .. '](' .. group.link .. ')*!*') else - output = '*Welcome to* _' .. group.name .. '_*!*' + table.insert(t, '*Welcome to* _' .. group.name .. '_*!*') end if group.motd then - output = output .. '\n\n*Message of the Day:*\n' .. group.motd + table.insert(t, '*Message of the Day:*\n' .. group.motd) end if #group.rules > 0 then - output = output .. '\n\n*Rules:*' + local rulelist = '*Rules:*\n' for i,v in ipairs(group.rules) do - output = output .. '\n*' .. i .. '.* ' .. v + rulelist = rulelist .. '*' .. i .. '.* ' .. v .. '\n' + end + table.insert(t, rulelist:trim()) + end + local flaglist = '' + for i = 1, #flags do + if group.flags[i] then + output = output .. '• ' .. flags[i].short .. '\n' end end - if group.flags then - output = output .. '\n\n*Flags:*\n' - for i = 1, #flags do - if group.flags[i] then - output = output .. '• ' .. flags[i].short .. '\n' - end - end + if flaglist ~= '' then + table.insert(t, '*Flags:*\n' .. flaglist:trim()) end - return output + local modstring = '' + for k,v in pairs(group.mods) do + modstring = modstring .. mod_format(k) + end + if modstring ~= '' then + table.insert(t, '*Moderators:*\n' .. modstring:trim()) + end + local govstring = '' + for k,v in pairs(group.govs) do + govstring = govstring .. mod_format(k) + end + if govstring ~= '' then + table.insert(t, '*Governors:*\n' .. govstring:trim()) + end + return table.concat(t, '\n\n') end @@ -389,15 +415,6 @@ local commands = { interior = true, action = function(msg, group) - local mod_format = function(id) - id = tostring(id) - local user = database.users[id] or { first_name = 'Unknown' } - local name = user.first_name - if user.last_name then name = user.first_name .. ' ' .. user.last_name end - name = markdown_escape(name) - local output = '• ' .. name .. ' `[' .. id .. ']`\n' - return output - end local modstring = '' for k,v in pairs(group.mods) do modstring = modstring .. mod_format(k) @@ -412,11 +429,10 @@ local commands = { if govstring ~= '' then govstring = '*Governors for* _' .. msg.chat.title .. '_ *:*\n' .. govstring end - local adminstring = '*Administrators:*\n' .. mod_format(config.admin) - for k,v in pairs(database.administration.admins) do - adminstring = adminstring .. mod_format(k) + local output = modstring .. govstring + if output == '' then + output = 'There are currently no moderators for this group.' end - local output = modstring .. govstring .. adminstring sendMessage(msg.chat.id, output, true, nil, true) end @@ -634,14 +650,14 @@ local commands = { '^/setrules[@'..bot.username..']*' }, - command = 'setrules \\n \\[rule2] ...', + command = 'setrules\\n\\n\\[rule2]\\n...', privilege = 3, interior = true, action = function(msg, group) local input = msg.text:match('^/setrules[@'..bot.username..']* (.+)') if not input then - sendReply(msg, '/setrules [rule]\n\n[rule]\n...') + sendMessage(msg.chat.id, '```\n/setrules\n\n[rule2]\n...\n```', true, msg.message_id, true) return elseif input == '--' or input == '—' then group.rules = {} @@ -807,10 +823,6 @@ local commands = { group.govs[target.id_str] = nil sendReply(msg, target.name .. ' is no longer a governor.') else - if target.rank > 3 then - sendReply(msg, target.name .. ' is greater than a governor.') - return - end if target.rank == 2 then group.mods[target.id_str] = nil end @@ -932,21 +944,17 @@ local commands = { interior = true, action = function(msg) - local input = msg.text:input() - if input then - if database.administration.groups[input] then - database.administration.groups[input] = nil - sendReply(msg, 'I am no longer administrating that group.') - else - sendReply(msg, 'I do not administrate that group.') + local input = msg.text:input() or msg.chat.id_str + if database.administration.groups[input] then + database.administration.groups[input] = nil + for i,v in ipairs(database.administration.activity) do + if v == input then + table.remove(database.administration.activity, i) + end end + sendReply(msg, 'I am no longer administrating that group.') else - if database.administration.groups[msg.chat.id_str] then - database.administration.groups[msg.chat.id_str] = nil - sendReply(msg, 'I am no longer administrating this group.') - else - sendReply(msg, 'I do not administrate this group.') - end + sendReply(msg, 'I do not administrate that group.') end end }, diff --git a/plugins/whoami.lua b/plugins/whoami.lua index a8db9c2..395717e 100755 --- a/plugins/whoami.lua +++ b/plugins/whoami.lua @@ -14,30 +14,38 @@ local action = function(msg) msg = msg.reply_to_message end - local from_name = msg.from.first_name if msg.from.last_name then - from_name = from_name .. ' ' .. msg.from.last_name + msg.from.name = msg.from.first_name .. ' ' .. msg.from.last_name + else + msg.from.name = msg.from.first_name end - if msg.from.username then - from_name = '@' .. msg.from.username .. ', AKA ' .. from_name - end - from_name = from_name .. ' (' .. msg.from.id .. ')' local chat_id = math.abs(msg.chat.id) if chat_id > 1000000000000 then chat_id = chat_id - 1000000000000 end - local to_name - if msg.chat.title then - to_name = msg.chat.title .. ' (' .. chat_id .. ').' + local user = 'You are @%s, also known as *%s* `[%s]`' + if msg.from.username then + user = user:format(msg.from.username, msg.from.name, msg.from.id) else - to_name = '@' .. bot.username .. ', AKA ' .. bot.first_name .. ' (' .. bot.id .. ').' + user = 'You are *%s* `[%s]`,' + user = user:format(msg.from.name, msg.from.id) end - local message = 'You are ' .. from_name .. ' and you are messaging ' .. to_name + local group = '@%s, also known as *%s* `[%s]`.' + if msg.chat.type == 'private' then + group = group:format(bot.username, bot.first_name, bot.id) + elseif msg.chat.username then + group = group:format(msg.chat.username, msg.chat.title, chat_id) + else + group = '*%s* `[%s]`.' + group = group:format(msg.chat.title, chat_id) + end - sendReply(msg, message) + local output = user .. ', and you are messaging ' .. group + + sendMessage(msg.chat.id, output, true, msg.message_id, true) end