oups
This commit is contained in:
@@ -63,8 +63,12 @@ func (m *Manager) DeleteClaimMessage(ctx context.Context, s *discordgo.Session,
|
||||
if err != nil || cm == nil {
|
||||
return
|
||||
}
|
||||
cfg := m.cfg.Get()
|
||||
if err := s.ChannelMessageDelete(cfg.Bot.ClaimChannel, cm.MessageID); err != nil {
|
||||
// Resolve claim channel: look up ticket for per-ticket channel, fall back to config.
|
||||
claimChannelID := m.cfg.Get().Bot.ClaimChannel
|
||||
if t, err := m.repo.GetByID(ctx, ticketID); err == nil && t != nil && t.ClaimChannelID != "" {
|
||||
claimChannelID = t.ClaimChannelID
|
||||
}
|
||||
if err := s.ChannelMessageDelete(claimChannelID, cm.MessageID); err != nil {
|
||||
slog.Warn("claim: delete message", "ticket_id", ticketID, "err", err)
|
||||
}
|
||||
m.claims.Delete(ctx, ticketID) //nolint
|
||||
@@ -80,6 +84,9 @@ func (m *Manager) MarkClaimed(ctx context.Context, s *discordgo.Session, ticket
|
||||
}
|
||||
cfg := m.cfg.Get()
|
||||
claimChannelID := cfg.Bot.ClaimChannel
|
||||
if ticket.ClaimChannelID != "" {
|
||||
claimChannelID = ticket.ClaimChannelID
|
||||
}
|
||||
if claimChannelID == "" {
|
||||
m.claims.Delete(ctx, ticket.ID) //nolint
|
||||
return
|
||||
@@ -131,7 +138,11 @@ func (m *Manager) startReupLoop(s *discordgo.Session, ticket *db.Ticket, lastReu
|
||||
}()
|
||||
|
||||
cfg := m.cfg.Get()
|
||||
interval := time.Duration(cfg.Bot.ClaimReupMinutes) * time.Minute
|
||||
reupMins := cfg.Bot.ClaimReupMinutes
|
||||
if ticket.ClaimReupMinutes > 0 {
|
||||
reupMins = ticket.ClaimReupMinutes
|
||||
}
|
||||
interval := time.Duration(reupMins) * time.Minute
|
||||
elapsed := time.Since(lastReupAt)
|
||||
next := interval - elapsed
|
||||
if next <= 0 {
|
||||
@@ -175,7 +186,11 @@ func (m *Manager) startReupLoop(s *discordgo.Session, ticket *db.Ticket, lastReu
|
||||
|
||||
// Re-read config in case of hot reload
|
||||
cfg = m.cfg.Get()
|
||||
interval = time.Duration(cfg.Bot.ClaimReupMinutes) * time.Minute
|
||||
reupMins = cfg.Bot.ClaimReupMinutes
|
||||
if ticket.ClaimReupMinutes > 0 {
|
||||
reupMins = ticket.ClaimReupMinutes
|
||||
}
|
||||
interval = time.Duration(reupMins) * time.Minute
|
||||
timer.Reset(interval)
|
||||
}
|
||||
}
|
||||
@@ -185,19 +200,24 @@ func (m *Manager) startReupLoop(s *discordgo.Session, ticket *db.Ticket, lastReu
|
||||
func (m *Manager) postClaim(ctx context.Context, s *discordgo.Session, ticket *db.Ticket, withPing bool) (string, error) {
|
||||
cfg := m.cfg.Get()
|
||||
claimChannelID := cfg.Bot.ClaimChannel
|
||||
if ticket.ClaimChannelID != "" {
|
||||
claimChannelID = ticket.ClaimChannelID
|
||||
}
|
||||
if claimChannelID == "" {
|
||||
return "", fmt.Errorf("claim_channel not configured")
|
||||
}
|
||||
|
||||
// Determine embed color from type config, fallback to blurple
|
||||
// Determine embed color and staff role — prefer ticket fields (set at open time for DB panels)
|
||||
embedColor := 0x5865f2
|
||||
var staffRoleID string
|
||||
staffRoleID := ticket.StaffRoleID
|
||||
if panel, ok := cfg.Panels[ticket.Panel]; ok {
|
||||
if t, ok := panel.Types[ticket.Type]; ok {
|
||||
if c := parseHexColor(t.EmbedColor); c != 0 {
|
||||
embedColor = c
|
||||
}
|
||||
staffRoleID = t.StaffRole
|
||||
if staffRoleID == "" {
|
||||
staffRoleID = t.StaffRole
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user