save first version
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
Reference in New Issue
Block a user