From 0487e35bb9dc16f2ca9b0a1dad536f2896c1ee92 Mon Sep 17 00:00:00 2001 From: Michael McCarty Date: Fri, 5 Dec 2025 21:14:02 -0800 Subject: [PATCH 1/4] =?UTF-8?q?=F0=9F=94=A7=20Refactor=20team=20name=20gen?= =?UTF-8?q?eration=20logic=20for=20better=20handling=20of=20edge=20cases?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/boost/contract.go | 50 +++++++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/src/boost/contract.go b/src/boost/contract.go index 443203a9..a9140cb7 100644 --- a/src/boost/contract.go +++ b/src/boost/contract.go @@ -491,27 +491,39 @@ func getContractRole(s *discordgo.Session, guildID string, contract *Contract) e unusedRoleNames[i], unusedRoleNames[j] = unusedRoleNames[j], unusedRoleNames[i] }) - lastChance := false - for { - name := unusedRoleNames[tryCount] - if !slices.Contains(existingRoles, name) { - // Found an unused name - teamName = name - break - } - tryCount++ - if tryCount == len(unusedRoleNames) { - if lastChance { - teamName = prefix + namesgenerator.GetRandomName(0) + if len(unusedRoleNames) == 0 { + // All names are taken; fall back to a generated team name + teamName = namesgenerator.GetRandomName(0) + prefix = "Team " + } else { + lastChance := false + for { + name := unusedRoleNames[tryCount] + if !slices.Contains(existingRoles, prefix+name) { + // Found an unused name + teamName = name break } - unusedRoleNames = randomThingNames // Reset the names to the fallback list - rand.Shuffle(len(unusedRoleNames), func(i, j int) { - unusedRoleNames[i], unusedRoleNames[j] = unusedRoleNames[j], unusedRoleNames[i] - }) - prefix = "Team " - tryCount = 0 - lastChance = true + tryCount++ + if tryCount == len(unusedRoleNames) { + if lastChance { + break + } + unusedRoleNames = randomThingNames // Reset the names to the fallback list + rand.Shuffle(len(unusedRoleNames), func(i, j int) { + unusedRoleNames[i], unusedRoleNames[j] = unusedRoleNames[j], unusedRoleNames[i] + }) + if len(unusedRoleNames) == 0 { + prefix = "Team " + break + } + prefix = "Team " + tryCount = 0 + lastChance = true + } + } + if teamName == "" { + teamName = prefix + namesgenerator.GetRandomName(0) } } From 24e73f02cde1953b2b705548240ef5092474a619 Mon Sep 17 00:00:00 2001 From: Michael McCarty Date: Fri, 5 Dec 2025 21:17:34 -0800 Subject: [PATCH 2/4] Update src/boost/contract.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/boost/contract.go | 1 - 1 file changed, 1 deletion(-) diff --git a/src/boost/contract.go b/src/boost/contract.go index a9140cb7..94cada24 100644 --- a/src/boost/contract.go +++ b/src/boost/contract.go @@ -514,7 +514,6 @@ func getContractRole(s *discordgo.Session, guildID string, contract *Contract) e unusedRoleNames[i], unusedRoleNames[j] = unusedRoleNames[j], unusedRoleNames[i] }) if len(unusedRoleNames) == 0 { - prefix = "Team " break } prefix = "Team " From 7633100931b3eb973ee26fc9821d0837e5689160 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 6 Dec 2025 05:18:21 +0000 Subject: [PATCH 3/4] Initial plan From 71eb6b29599fcc17c891cc624380d3805df04e03 Mon Sep 17 00:00:00 2001 From: Michael McCarty Date: Fri, 5 Dec 2025 21:22:31 -0800 Subject: [PATCH 4/4] Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/boost/contract.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/boost/contract.go b/src/boost/contract.go index 94cada24..c913c722 100644 --- a/src/boost/contract.go +++ b/src/boost/contract.go @@ -509,14 +509,21 @@ func getContractRole(s *discordgo.Session, guildID string, contract *Contract) e if lastChance { break } - unusedRoleNames = randomThingNames // Reset the names to the fallback list + prefix = "Team " + // Filter out names that are already taken with the new prefix + filteredNames := make([]string, 0, len(unusedRoleNames)) + for _, name := range unusedRoleNames { + if !slices.Contains(existingRoles, prefix+name) { + filteredNames = append(filteredNames, name) + } + } + unusedRoleNames = filteredNames rand.Shuffle(len(unusedRoleNames), func(i, j int) { unusedRoleNames[i], unusedRoleNames[j] = unusedRoleNames[j], unusedRoleNames[i] }) if len(unusedRoleNames) == 0 { break } - prefix = "Team " tryCount = 0 lastChance = true }