adv_chat/conf.lua

129 lines
4.5 KiB
Lua

local schemedef={
type = "table",
children={
message_prefix={type="string"},
mention_prefix={type="string"},
mention_delim={type="string"},
content_prefix={type="string"},
message_suffix={type="string"}
}
}
local conf_spec={type="table", required_children={
schemes={type="table", required_children={
minetest=schemedef
}, possible_children={
irc=schemedef,
discord=schemedef
}},
bridges={
type="table",
possible_children={
irc={type="table", required_children={
port={type="number", range={0, 65535}},
network={type="string"},
nickname={type="string"},
channelname={type="string"},
ssl={type="boolean"},
prefix={type="string"},
minetest_prefix={type="string"}
},
possible_children={
bridge={type="string", possible_values=modlib.table.set{"files", "sockets"}},
convert_minetest_colors={type="string", possible_values=modlib.table.set{"disabled", "hex", "safer", "safest"}},
handle_discord_markdown={type="boolean"},
handle_minetest_markdown={type="boolean"}
}
},
discord={type="table", required_children={
token={type="string"},
channelname={type="string"},
prefix={type="string"},
minetest_prefix={type="string"}
},
possible_children={
blacklist={type="table", keys={type="string"}},
whitelist={type="table", keys={type="string"}},
guild_id={type="string"},
bridge={type="string", possible_values=modlib.table.set{"files", "sockets"}},
convert_internal_markdown={type="boolean"},
convert_minetest_markdown={type="boolean"},
handle_irc_styles={type="string", possible_values=modlib.table.set{"escape_markdown", "convert", "disabled"}},
send_embeds={type="boolean"}
}
},
command_blacklist={type="table", keys={type="number"}, values={type="string"}},
command_whitelist={type="table", keys={type="number"}, values={type="string"}}
}
}
}, possible_children={
roles_case_insensitive={type="boolean"}
}}
local config=modlib.conf.import("adv_chat", conf_spec)
modlib.table.add_all(getfenv(1), config)
function load_schemes()
for k, v in pairs(schemes.minetest) do
schemes.minetest[k] = colorize_message(v)
end
for _,s in pairs({"irc", "discord"}) do
if not schemes[s] then
schemes[s] = {}
for k, v in pairs(schemes.minetest) do
schemes[s][k] = minetest.strip_colors(v)
end
end
end
load_schemes = nil
end
if bridges.irc and not bridges.irc.style_conversion then
bridges.irc.style_conversion={}
if not bridges.irc.style_conversion.colors then
bridges.irc.style_conversion.colors="disabled"
end
end
if bridges.discord then
local blacklist_empty=modlib.table.is_empty(bridges.discord.blacklist or {})
local whitelist_empty=modlib.table.is_empty(bridges.discord.whitelist or {})
if blacklist_empty then
if not whitelist_empty then
bridges.discord.blacklist=setmetatable(bridges.discord.blacklist, {__index=function(value)
if bridges.discord.whitelist[value] then
return nil
end
return true
end})
end
else
if not whitelist_empty then
bridges.discord.blacklist={}
end
end
end
if bridges.discord or bridges.irc then
bridges.command_blacklist = modlib.table.set(bridges.command_blacklist or {})
bridges.command_whitelist = modlib.table.set(bridges.command_whitelist or {})
local blacklist_empty=modlib.table.is_empty(bridges.command_blacklist)
local whitelist_empty=modlib.table.is_empty(bridges.command_whitelist or {})
if blacklist_empty then
if not whitelist_empty then
bridges.command_blacklist=setmetatable(bridges.command_blacklist, {__index=function(value)
if bridges.command_whitelist[value] then
return nil
end
return true
end})
end
end
end