Rework inviter to grant assist only to members of listenChannel

This commit is contained in:
2024-12-26 21:29:27 +01:00
parent 3049a0b554
commit 5f3374a073
2 changed files with 44 additions and 3 deletions

View File

@@ -82,6 +82,7 @@ local function init()
---@field enabled boolean
---@field listeningChannel string
---@field keyword string
---@field updateInterval number
--- Data ---
---@class HeimdallMessengerData
@@ -120,11 +121,13 @@ local function init()
data.who = {
ignored = {},
}
--/run Heimdall_Data.config = {inviter={enabled=false},deathReporter={enabled=false},spotter={enabled=false,everyone=false}}
--/run Heimdall_Data.config = {who={enabled=true},deathReporter={enabled=true},spotter={enabled=true}}
--/run Heimdall_Data.config = {deathReporter={enabled=true}}
--/run Heimdall_Data.config = {deathReporter={enabled=false},spotter={enabled=false}}
--/run Heimdall_Data.config = {deathReporter={enabled=false},spotter={enabled=true,everyone=true}}
--/run Heimdall_Data.config = {inviter={enabled=true},deathReporter={enabled=true},spotter={enabled=true,everyone=true}}
--/run Heimdall_Data.config = {inviter={enabled=true,keyword="+++"},deathReporter={enabled=true},spotter={enabled=true,everyone=true}}
data.config = {
spotter = {
enabled = data.GetOrDefault(Heimdall_Data, { "config", "spotter", "enabled" }, true),
@@ -171,7 +174,8 @@ local function init()
"Растафаркрай",
"Frosstmorn",
"Pulsjkee",
"Paskoo"
"Paskoo",
"发酸的风景画",
}),
stinkies = data.GetOrDefault(Heimdall_Data, { "config", "stinkies" }, {
["Ahhahahh"] = true,
@@ -236,6 +240,7 @@ local function init()
enabled = data.GetOrDefault(Heimdall_Data, { "config", "inviter", "enabled" }, false),
listeningChannel = data.GetOrDefault(Heimdall_Data, { "config", "inviter", "listeningChannel" }, "Agent"),
keyword = data.GetOrDefault(Heimdall_Data, { "config", "inviter", "keyword" }, "+"),
updateInterval = data.GetOrDefault(Heimdall_Data, { "config", "inviter", "updateInterval" }, 1),
}
}

View File

@@ -9,7 +9,37 @@ function data.Inviter.Init()
return
end
---@param channelName string
---@return table<string, boolean>
local function GetChannelMembers(channelName)
local channelFrame = _G["ChannelFrame"]
channelFrame:Show()
for i = 1, 40 do
local button = _G["ChannelButton" .. i]
if not button then break end
local text = button:GetText()
if text == channelName then
button:Click()
break
end
end
local index = GetSelectedDisplayChannel()
local count = select(5, GetChannelDisplayInfo(index))
local res = {}
for i = 1, count do
local name = GetChannelRosterInfo(index, i)
if name then
res[name] = true
end
end
channelFrame:Hide()
return res
end
local inviterGroupFrame = CreateFrame("Frame")
local nextUpdate = 0
inviterGroupFrame:RegisterEvent("GROUP_ROSTER_UPDATE")
inviterGroupFrame:SetScript("OnEvent", function(self, event, ...)
if not UnitIsGroupLeader("player") then return end
@@ -18,9 +48,15 @@ function data.Inviter.Init()
ConvertToRaid()
end
if not IsEveryoneAssistant() then
SetEveryoneIsAssistant(true)
if nextUpdate >= GetTime() then return end
nextUpdate = GetTime() + data.config.inviter.updateInterval
for name, _ in pairs(GetChannelMembers(data.config.inviter.listeningChannel)) do
PromoteToAssistant(name, true)
end
-- if not IsEveryoneAssistant() then
-- SetEveryoneIsAssistant(true)
-- end
end)
local inviterChannelFrame = CreateFrame("Frame")