Rework inviter config

This commit is contained in:
2025-01-01 14:10:33 +01:00
parent 9ebc95885e
commit 8e90a71dfc
2 changed files with 27 additions and 67 deletions

View File

@@ -10,7 +10,6 @@ local addonname, shared = ...
local function init()
---@class Heimdall_Data
---@field config HeimdallConfig
---@field whitelist table<string, string>
---@field stinkies table<string, boolean>
if not Heimdall_Data then Heimdall_Data = {} end
@@ -38,6 +37,7 @@ local function init()
---@field inviter HeimdallInviterConfig
---@field whisperNotify table<string, string>
---@field stinkies table<string, boolean>
---@field agents table<string, string>
---@class HeimdallSpotterConfig
---@field enabled boolean
@@ -72,7 +72,8 @@ local function init()
---@field enabled boolean
---@field listeningChannel string
---@field keyword string
---@field whitelist table<string, string>
---@field allAssist boolean
---@field agentsAssist boolean
--- Data ---
---@class HeimdallMessengerData
@@ -155,8 +156,10 @@ local function init()
enabled = shared.GetOrDefault(Heimdall_Data, { "config", "inviter", "enabled" }, false),
listeningChannel = shared.GetOrDefault(Heimdall_Data, { "config", "inviter", "listeningChannel" }, "Agent"),
keyword = shared.GetOrDefault(Heimdall_Data, { "config", "inviter", "keyword" }, "+"),
whitelist = shared.GetOrDefault(Heimdall_Data, { "config", "inviter", "whitelist" }, {}),
}
allAssist = shared.GetOrDefault(Heimdall_Data, { "config", "inviter", "allAssist" }, false),
agentsAssist = shared.GetOrDefault(Heimdall_Data, { "config", "inviter", "agentsAssist" }, false),
},
agents = shared.GetOrDefault(Heimdall_Data, { "config", "agents" }, {}),
}
shared.raceMap = {

View File

@@ -1,94 +1,53 @@
local addonname, data = ...
---@cast data HeimdallData
local addonname, shared = ...
---@cast shared HeimdallShared
---@cast addonname string
data.Inviter = {}
function data.Inviter.Init()
if not data.config.inviter.enabled then
print("Heimdall - Inviter disabled")
return
end
shared.Inviter = {}
function shared.Inviter.Init()
-- if not Heimdall_Data.config.inviter.enabled then
-- print("Heimdall - Inviter disabled")
-- return
-- end
---@type table<string, boolean>
local channelMembers = {}
local channelRosterFrame = CreateFrame("Frame")
channelRosterFrame:RegisterEvent("CHANNEL_ROSTER_UPDATE")
channelRosterFrame:SetScript("OnEvent", function(self, event, index)
if not Heimdall_Data.config.inviter.enabled then return end
local count = select(5, GetChannelDisplayInfo(index))
channelMembers = {}
for i = 1, count do
local name = GetChannelRosterInfo(index, i)
if name then
channelMembers[name] = true
data.config.inviter.whitelist[name] = date("%Y-%m-%dT%H:%M:%S")
Heimdall_Data.config.agents[name] = date("%Y-%m-%dT%H:%M:%S")
end
end
end)
---@param channelName string
---@return table<string, boolean>
local function UpdateChannelMembers(channelName)
local friendsFrame = _G["FriendsFrame"]
local channelFrame = _G["ChannelFrame"]
OpenFriendsFrame()
_G["FriendsFrameTab3"]:Click()
_G["ChannelButton2"]:Click()
for i = 1, 40 do
local button = _G["ChannelButton" .. i]
if not button then break end
local text = button:GetText()
if string.find(text, channelName) then
button:Click()
break
end
end
channelFrame:Hide()
friendsFrame:Hide()
return channelMembers
end
C_Timer.NewTicker(30, function()
UpdateChannelMembers(data.config.inviter.listeningChannel)
end)
-- print("pls joomp")
-- hooksecurefunc("JumpOrAscendStart", function()
-- print("JOOMP")
-- UpdateChannelMembers(data.config.inviter.listeningChannel)
-- local foo = channelMembers
-- for name, _ in pairs(foo) do
-- print(name)
-- end
-- end)
local inviterGroupFrame = CreateFrame("Frame")
local nextUpdate = 0
inviterGroupFrame:RegisterEvent("GROUP_ROSTER_UPDATE")
inviterGroupFrame:SetScript("OnEvent", function(self, event, ...)
if not Heimdall_Data.config.inviter.enabled then return end
if not UnitIsGroupLeader("player") then return end
if not IsInRaid() then
ConvertToRaid()
end
if nextUpdate >= GetTime() then return end
nextUpdate = GetTime() + data.config.inviter.updateInterval
for name, _ in pairs(channelMembers) do
PromoteToAssistant(name, true)
if Heimdall_Data.config.inviter.allAssist then
SetEveryoneIsAssistant()
end
for name, _ in pairs(data.config.inviter.whitelist) do
PromoteToAssistant(name, true)
if Heimdall_Data.config.inviter.agentsAssist then
for name, _ in pairs(Heimdall_Data.config.agents) do
PromoteToAssistant(name, true)
end
end
-- if not IsEveryoneAssistant() then
-- SetEveryoneIsAssistant(true)
-- end
end)
local inviterChannelFrame = CreateFrame("Frame")
inviterChannelFrame:RegisterEvent("CHAT_MSG_CHANNEL")
inviterChannelFrame:SetScript("OnEvent", function(self, event, msg, sender, ...)
if not Heimdall_Data.config.inviter.enabled then return end
local channelId = select(6, ...)
local channelname = ""
---@type any[]
@@ -103,11 +62,9 @@ function data.Inviter.Init()
end
end
if channelname ~= data.config.inviter.listeningChannel then
return
end
if channelname ~= Heimdall_Data.config.inviter.listeningChannel then return end
if msg == data.config.inviter.keyword then
if msg == Heimdall_Data.config.inviter.keyword then
InviteUnit(sender)
end
end)