c7ba76e72b
fixed kickass plugin (required HTTPS) included console.lua (for those who may use it) included link to otouto update channel in about.lua
95 lines
1.9 KiB
Lua
Executable File
95 lines
1.9 KiB
Lua
Executable File
-- This is an experimental plugin for indexing a list of compliant groups, their descriptions, how to join them, etc. It is not complete nor fully implemented. The current test bot is @dgmpbot.
|
|
|
|
local triggers = {
|
|
'^/index',
|
|
'^/listgroups'
|
|
}
|
|
|
|
local dgmp_index = function(msg)
|
|
|
|
local dgmp = load_data('dgmp.json')
|
|
|
|
local input = get_input(msg.text)
|
|
if not input then return end
|
|
|
|
input = JSON.decode(input)
|
|
if not input then return end
|
|
|
|
local id = tostring(input.chatid)
|
|
|
|
if not dgmp[id] then
|
|
dgmp[id] = {}
|
|
end
|
|
group = dgmp[id]
|
|
|
|
group.chatname = input.chatname
|
|
if input.usercount then
|
|
group.usercount = input.usercount
|
|
end
|
|
if input.description then
|
|
group.description = input.description
|
|
end
|
|
if input.joininstructions then
|
|
group.joininstructions = input.joininstructions
|
|
end
|
|
|
|
save_data('dgmp.json', dgmp)
|
|
|
|
end
|
|
|
|
local dgmp_list = function(msg)
|
|
|
|
local dgmp = load_data('dgmp.json')
|
|
|
|
local input = get_input(msg.text)
|
|
if not input then
|
|
input = ''
|
|
else
|
|
input = string.lower(input)
|
|
end
|
|
|
|
local output = ''
|
|
for k,v in pairs(dgmp) do
|
|
if string.find(string.lower(v.chatname), input) then
|
|
output = output .. v.chatname .. ' (' .. k .. ')\n'
|
|
if v.description then
|
|
output = output .. v.description .. '\n'
|
|
end
|
|
if v.usercount then
|
|
output = output .. 'Users: ' .. v.usercount .. '\n'
|
|
end
|
|
if v.joininstructions then
|
|
output = output .. 'How to join: ' .. v.joininstructions .. '\n'
|
|
end
|
|
output = output .. '\n'
|
|
end
|
|
end
|
|
|
|
if string.len(output) > 4000 then
|
|
output = 'List is too long! Please use a (better) search query.'
|
|
end
|
|
|
|
output = trim_string(output)
|
|
if string.len(output) == 0 then
|
|
output = 'No results found.'
|
|
end
|
|
|
|
send_msg(msg, output)
|
|
|
|
end
|
|
|
|
local action = function(msg)
|
|
|
|
if string.match(msg.text, '^/index') then
|
|
dgmp_index(msg)
|
|
elseif string.match(msg.text, '^/listgroups') then
|
|
dgmp_list(msg)
|
|
end
|
|
|
|
end
|
|
|
|
return {
|
|
triggers = triggers,
|
|
action = action
|
|
}
|