save first version

This commit is contained in:
lfirmin
2026-05-02 02:55:53 +02:00
parent 65d91d8de2
commit 8482f0cc06
35 changed files with 5579 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
package events
import (
"context"
"log/slog"
"time"
"github.com/bwmarrin/discordgo"
"github.com/leolionad58/ticketbot/internal/db"
)
type ChannelDeleteHandler struct {
Tickets *db.TicketRepo
}
func (h *ChannelDeleteHandler) Handle(s *discordgo.Session, c *discordgo.ChannelDelete) {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if err := h.Tickets.SetClosedByChannel(ctx, c.ID, "channel deleted manually"); err != nil {
slog.Error("channel_delete: update ticket", "channel_id", c.ID, "err", err)
}
}
+45
View File
@@ -0,0 +1,45 @@
package events
import (
"context"
"log/slog"
"time"
"github.com/bwmarrin/discordgo"
"github.com/leolionad58/ticketbot/internal/claim"
"github.com/leolionad58/ticketbot/internal/db"
)
type ReadyEvent struct {
TicketRepo *db.TicketRepo
ClaimRepo *db.ClaimMessageRepo
ClaimMgr *claim.Manager
}
func (h *ReadyEvent) Handle(s *discordgo.Session, r *discordgo.Ready) {
slog.Info("bot ready", "user", r.User.Username, "guilds", len(r.Guilds))
h.resumeReupLoops(s)
}
func (h *ReadyEvent) resumeReupLoops(s *discordgo.Session) {
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
openTickets, err := h.TicketRepo.ListOpen(ctx)
if err != nil {
slog.Error("ready: list open tickets", "err", err)
return
}
resumed := 0
for _, ticket := range openTickets {
cm, err := h.ClaimRepo.Get(ctx, ticket.ID)
lastReupAt := ticket.OpenedAt
if err == nil && cm != nil {
lastReupAt = cm.LastReupAt
}
h.ClaimMgr.ResumeTicket(s, ticket, lastReupAt)
resumed++
}
slog.Info("ready: resumed re-up loops", "count", resumed)
}