Disable plugins only on specific chats (current chat)

This commit is contained in:
yago
2015-04-12 21:55:01 +02:00
parent ecc9051db2
commit 91aac0c138
2 changed files with 92 additions and 11 deletions

View File

@ -65,7 +65,7 @@ local function enable_plugin( filename )
end
end
local function disable_plugin( name )
local function disable_plugin( name, chat )
-- Check if plugins exists
if not plugin_exists(name) then
return 'Plugin '..name..' does not exists'
@ -81,21 +81,76 @@ local function disable_plugin( name )
return reload_plugins(true)
end
local function disable_plugin_on_chat(receiver, plugin)
if not plugin_exists(plugin) then
return "Plugin doesn't exists"
end
if not _config.disabled_plugin_on_chat then
_config.disabled_plugin_on_chat = {}
end
if not _config.disabled_plugin_on_chat[receiver] then
_config.disabled_plugin_on_chat[receiver] = {}
end
_config.disabled_plugin_on_chat[receiver][plugin] = true
save_config()
return 'Plugin '..plugin..' disabled on this chat'
end
local function reenable_plugin_on_chat(receiver, plugin)
if not _config.disabled_plugin_on_chat then
return 'There aren\'t any disabled plugin.'
end
if not _config.disabled_plugin_on_chat[receiver] then
return 'There aren\'t any disabled plugin for this chat.'
end
if not _config.disabled_plugin_on_chat[receiver][plugin] then
return 'This plugin is not disabled'
end
_config.disabled_plugin_on_chat[receiver][plugin] = false
return 'Plugin '..plugin..' is enabled again'
end
local function run(msg, matches)
-- Show the available plugins
if matches[1] == '!plugins' then
return list_plugins()
end
-- Reenable a plugin for this chat
if matches[1] == 'enable' and matches[3] == 'chat' then
local receiver = get_receiver(msg)
local plugin = matches[2]
print("enable "..plugin..' on this chat')
return reenable_plugin_on_chat(receiver, plugin)
end
-- Enable a plugin
if matches[1] == 'enable' then
print("enable: "..matches[2])
return enable_plugin(matches[2])
end
-- Disable a plugin on a chat
if matches[1] == 'disable' and matches[3] == 'chat' then
local plugin = matches[2]
local receiver = get_receiver(msg)
print("disable "..plugin..' on this chat')
return disable_plugin_on_chat(receiver, plugin)
end
-- Disable a plugin
if matches[1] == 'disable' then
print("disable: "..matches[2])
return disable_plugin(matches[2])
end
-- Reload all the plugins!
if matches[1] == 'reload' then
return reload_plugins(true)
@ -105,14 +160,17 @@ end
return {
description = "Plugin to manage other plugins. Enable, disable or reload.",
usage = {
"!plugins: list all plugins",
"!plugins enable [plugin]: enable plugin",
"!plugins disable [plugin]: disable plugin",
"!plugins reload: reloads all plugins" },
"!plugins: list all plugins.",
"!plugins enable [plugin]: enable plugin.",
"!plugins disable [plugin]: disable plugin.",
"!plugins disable [plugin] chat: disable plugin only this chat.",
"!plugins reload: reloads all plugins." },
patterns = {
"^!plugins$",
"^!plugins? (enable) (.*)$",
"^!plugins? (disable) (.*)$",
"^!plugins? (enable) ([%w_%.%-]+)$",
"^!plugins? (disable) ([%w_%.%-]+)$",
"^!plugins? (disable) ([%w_%.%-]+) (chat)",
"^!plugins? (enable) ([%w_%.%-]+) (chat)",
"^!plugins? (reload)$" },
run = run,
privileged = true