administration.lua 1.13.2 - /desc can now be used with a query.

remind.lua - Now accepts repled-to message text as reminder.
This commit is contained in:
topkecleon 2016-08-30 15:09:24 -04:00
parent 384e4c62a3
commit caff204c71
3 changed files with 40 additions and 18 deletions

View File

@ -108,14 +108,14 @@ function drua.message(target, text, s)
text = escape(text)
local command = 'msg %s "%s"'
command = command:format(target, text)
return drua.send(command, _, s)
return drua.send(command, nil, s)
end
function drua.send_photo(target, photo, s)
target = format_target(target)
local command = 'send_photo %s %s'
command = command:format(target, photo)
return drua.send(command, _, s)
return drua.send(command, nil, s)
end
function drua.add_user(chat, target, s)
@ -123,24 +123,24 @@ function drua.add_user(chat, target, s)
chat, a = format_target(chat)
target = format_target(target)
local command = comtab.add[a]:format(chat, target)
return drua.send(command, _, s)
return drua.send(command, nil, s)
end
function drua.kick_user(chat, target, s)
-- Get the group info so tg will recognize the target.
drua.get_info(chat, _, s)
drua.get_info(chat, nil, s)
local a
chat, a = format_target(chat)
target = format_target(target)
local command = comtab.kick[a]:format(chat, target)
return drua.send(command, _, s)
return drua.send(command, nil, s)
end
function drua.rename_chat(chat, name, s)
local a
chat, a = format_target(chat)
local command = comtab.rename[a]:format(chat, name)
return drua.send(command, _, s)
return drua.send(command, nil, s)
end
function drua.export_link(chat, s)
@ -166,7 +166,7 @@ function drua.set_photo(chat, photo, s)
local a
chat, a = format_target(chat)
local command = comtab.photo_set[a]:format(chat, photo)
return drua.send(command, _, s)
return drua.send(command, nil, s)
end
function drua.get_info(target, s)
@ -181,7 +181,7 @@ function drua.channel_set_admin(chat, user, rank, s)
user = format_target(user)
local command = 'channel_set_admin %s %s %s'
command = command:format(chat, user, rank)
return drua.send(command, _, s)
return drua.send(command, nil, s)
end
function drua.channel_set_about(chat, text, s)
@ -189,15 +189,15 @@ function drua.channel_set_about(chat, text, s)
text = escape(text)
local command = 'channel_set_about %s "%s"'
command = command:format(chat, text)
return drua.send(command, _, s)
return drua.send(command, nil, s)
end
function drua.block(user, s)
return drua.send('block_user user#' .. user, _, s)
return drua.send('block_user user#' .. user, nil, s)
end
function drua.unblock(user, s)
return drua.send('unblock_user user#' .. user, _, s)
return drua.send('unblock_user user#' .. user, nil, s)
end
return drua

View File

@ -1,5 +1,5 @@
--[[
administration.lua, version 1.13.1
administration.lua, version 1.13.2
This plugin provides self-hosted, single-realm group administration.
It requires tg (http://github.com/vysheng/tg) with supergroup support.
For more documentation, read the the manual (otou.to/rtfm).
@ -34,6 +34,8 @@
modrights, to give moderators access to changing the group photo, title,
link, and motd (config option is deprecated. RIP). /unban will reset the
target's autokick counter. Added configuration for default flag settings.
1.13.2 - /desc can now be used with a query.
]]--
local drua = require('otouto.drua-tg')
@ -715,19 +717,34 @@ function administration.init_command(self_, config_)
end
utilities.send_message(msg.chat.id, output, true, nil, true)
end
},
{ -- /desc
triggers = utilities.triggers(self_.info.username, config_.cmd_pat):t('desc'):t('description').table,
triggers = utilities.triggers(self_.info.username, config_.cmd_pat):t('desc', true):t('description', true).table,
command = 'description',
privilege = 1,
interior = true,
interior = false,
doc = 'Returns a description of the group (in a private message), including its motd, rules, flags, governor, and moderators.',
action = function(self, msg, group, config)
local output = administration.get_desc(self, msg.chat.id, config)
local chat = group and tostring(msg.chat.id) or nil
local input = utilities.input(msg.text)
if input then
for chat_id_str, group_ in pairs(self.database.administration.groups) do
if (not group_.flags[1]) and group_.link then -- no unlisted or unlinked groups
if input == chat_id_str or string.match(group_.name:lower(), input:lower()) then
chat = chat_id_str
break
end
end
end
end
if not chat then
utilities.send_reply(msg, 'Group not found. Specify a group by name or ID, or use this command without arguments inside an administrated group.')
return
end
local output = administration.get_desc(self, chat, config)
if utilities.send_message(msg.from.id, output, true, nil, true) then
if msg.from.id ~= msg.chat.id then
utilities.send_reply(msg, 'I have sent you the requested information in a private message.')

View File

@ -33,8 +33,13 @@ function remind:action(msg, config)
elseif duration > config.remind.max_duration then
duration = config.remind.max_duration
end
local message = utilities.input(input)
if not message then
local message
if msg.reply_to_message and #msg.reply_to_message.text > 0 then
message = msg.reply_to_message.text
elseif utilities.input(input) then
message = utilities.input(input)
else
utilities.send_reply(msg, remind.doc, true)
return
end