Implement enabling/disabling commands

This commit is contained in:
2025-01-05 23:54:18 +01:00
parent aa46000abf
commit 8d3813f3ee
6 changed files with 23 additions and 16 deletions

View File

@@ -123,6 +123,7 @@ local function init()
---@field enabled boolean ---@field enabled boolean
---@field masterChannel string ---@field masterChannel string
---@field commander string ---@field commander string
---@field commands table<string, boolean>
--- Data --- --- Data ---
---@class HeimdallMessengerData ---@class HeimdallMessengerData
@@ -240,6 +241,7 @@ local function init()
enabled = shared.GetOrDefault(Heimdall_Data, { "config", "commander", "enabled" }, false), enabled = shared.GetOrDefault(Heimdall_Data, { "config", "commander", "enabled" }, false),
masterChannel = shared.GetOrDefault(Heimdall_Data, { "config", "commander", "masterChannel" }, "Agent"), masterChannel = shared.GetOrDefault(Heimdall_Data, { "config", "commander", "masterChannel" }, "Agent"),
commander = shared.GetOrDefault(Heimdall_Data, { "config", "commander", "commander" }, "Heimdállr"), commander = shared.GetOrDefault(Heimdall_Data, { "config", "commander", "commander" }, "Heimdállr"),
commands = shared.GetOrDefault(Heimdall_Data, { "config", "commander", "commands" }, {}),
}, },
} }

View File

@@ -1,6 +1,6 @@
## Interface: 70300 ## Interface: 70300
## Title: Heimdall ## Title: Heimdall
## Version: 2.11.0 ## Version: 2.12.0
## Notes: Watches over areas and alerts when hostiles spotted ## Notes: Watches over areas and alerts when hostiles spotted
## Author: Cyka ## Author: Cyka
## SavedVariables: Heimdall_Data ## SavedVariables: Heimdall_Data

BIN
Heimdall.zip (Stored with Git LFS)

Binary file not shown.

View File

@@ -191,8 +191,11 @@ function shared.Commander.Init()
sender = string.match(sender, "^[^-]+") sender = string.match(sender, "^[^-]+")
for _, command in ipairs(commands) do for _, command in ipairs(commands) do
if not command.commanderOnly or local enabled = Heimdall_Data.config.commander.commands[command.keywordRe] == true or false
(command.commanderOnly and sender == Heimdall_Data.config.commander.commander) then if enabled and
(not command.commanderOnly
or (command.commanderOnly
and sender == Heimdall_Data.config.commander.commander)) then
if msg:match(command.keywordRe) then if msg:match(command.keywordRe) then
local messages = command.callback({ strsplit(" ", msg) }) local messages = command.callback({ strsplit(" ", msg) })
for _, message in ipairs(messages) do for _, message in ipairs(messages) do

File diff suppressed because one or more lines are too long

View File

@@ -1,12 +1,12 @@
---@param str string ---@param str string
---@return table<string, boolean> ---@return table<string, boolean>
local function StringToMap(str) local function StringToMap(str, deliminer)
if not str then return {} end if not str then return {} end
local map = {} local map = {}
local parts = { strsplit("\n", str) } local parts = { strsplit(deliminer, str) }
for _, line in ipairs(parts) do for _, line in ipairs(parts) do
line = strtrim(line) line = strtrim(line)
if line ~= "" then if line ~= "" then
map[line] = true map[line] = true
end end
end end
@@ -15,10 +15,10 @@ end
---@param str string ---@param str string
---@return string[] ---@return string[]
local function StringToArray(str) local function StringToArray(str, deliminer)
if not str then return {} end if not str then return {} end
local ret = {} local ret = {}
local array = { strsplit("\n", str) } local array = { strsplit(deliminer, str) }
for i, line in ipairs(array) do for i, line in ipairs(array) do
line = strtrim(line) line = strtrim(line)
if line ~= "" then if line ~= "" then
@@ -43,11 +43,11 @@ local config = {
}, },
who = { who = {
enabled = aura_env.config.who.enabled, enabled = aura_env.config.who.enabled,
ignored = StringToMap(aura_env.config.who.ignored), ignored = StringToMap(aura_env.config.who.ignored, "\n"),
notifyChannel = aura_env.config.who.notifyChannel, notifyChannel = aura_env.config.who.notifyChannel,
ttl = aura_env.config.who.ttl, ttl = aura_env.config.who.ttl,
doWhisper = aura_env.config.who.doWhisper, doWhisper = aura_env.config.who.doWhisper,
zoneNotifyFor = StringToMap(aura_env.config.who.zoneNotifyFor), zoneNotifyFor = StringToMap(aura_env.config.who.zoneNotifyFor, "\n"),
}, },
messenger = { messenger = {
enabled = aura_env.config.messenger.enabled, enabled = aura_env.config.messenger.enabled,
@@ -61,8 +61,8 @@ local config = {
zoneOverride = aura_env.config.deathReporter.zoneOverride, zoneOverride = aura_env.config.deathReporter.zoneOverride,
duelThrottle = aura_env.config.deathReporter.duelThrottle, duelThrottle = aura_env.config.deathReporter.duelThrottle,
}, },
whisperNotify = StringToArray(aura_env.config.whisperNotify), whisperNotify = StringToArray(aura_env.config.whisperNotify, "\n"),
stinkies = StringToMap(aura_env.config.stinkies), stinkies = StringToMap(aura_env.config.stinkies, "\n"),
inviter = { inviter = {
enabled = aura_env.config.inviter.enabled, enabled = aura_env.config.inviter.enabled,
listeningChannel = aura_env.config.inviter.listeningChannel, listeningChannel = aura_env.config.inviter.listeningChannel,
@@ -94,12 +94,13 @@ local config = {
}, },
macroer = { macroer = {
enabled = aura_env.config.macroer.enabled, enabled = aura_env.config.macroer.enabled,
priority = StringToArray(aura_env.config.macroer.priority), priority = StringToArray(aura_env.config.macroer.priority, "\n"),
}, },
commander = { commander = {
enabled = aura_env.config.commander.enabled, enabled = aura_env.config.commander.enabled,
masterChannel = aura_env.config.commander.masterChannel, masterChannel = aura_env.config.commander.masterChannel,
commander = aura_env.config.commander.commander, commander = aura_env.config.commander.commander,
commands = StringToMap(aura_env.config.commander.commands, ","),
}, },
} }
@@ -158,6 +159,7 @@ Heimdall_Data.config.macroer.priority = config.macroer.priority
Heimdall_Data.config.commander.enabled = config.commander.enabled Heimdall_Data.config.commander.enabled = config.commander.enabled
Heimdall_Data.config.commander.masterChannel = config.commander.masterChannel Heimdall_Data.config.commander.masterChannel = config.commander.masterChannel
Heimdall_Data.config.commander.commander = config.commander.commander Heimdall_Data.config.commander.commander = config.commander.commander
Heimdall_Data.config.commander.commands = config.commander.commands
Heimdall_Data.config.whisperNotify = config.whisperNotify Heimdall_Data.config.whisperNotify = config.whisperNotify
Heimdall_Data.config.stinkies = config.stinkies Heimdall_Data.config.stinkies = config.stinkies