save first version
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
package logger
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
|
||||
"github.com/bwmarrin/discordgo"
|
||||
"github.com/leolionad58/ticketbot/internal/config"
|
||||
"github.com/leolionad58/ticketbot/internal/db"
|
||||
)
|
||||
|
||||
type DiscordLogger struct {
|
||||
Session *discordgo.Session
|
||||
Config *config.Provider
|
||||
}
|
||||
|
||||
func NewDiscordLogger(s *discordgo.Session, cfg *config.Provider) *DiscordLogger {
|
||||
return &DiscordLogger{Session: s, Config: cfg}
|
||||
}
|
||||
|
||||
func (l *DiscordLogger) send(embed *discordgo.MessageEmbed) {
|
||||
cfg := l.Config.Get()
|
||||
if cfg.Bot.LogsChannel == "" {
|
||||
return
|
||||
}
|
||||
if _, err := l.Session.ChannelMessageSendEmbed(cfg.Bot.LogsChannel, embed); err != nil {
|
||||
slog.Error("discord log: send", "err", err)
|
||||
}
|
||||
}
|
||||
|
||||
func (l *DiscordLogger) LogTicketOpened(ticket *db.Ticket, userID string) {
|
||||
l.send(&discordgo.MessageEmbed{
|
||||
Title: "Ticket ouvert",
|
||||
Color: 0x57f287,
|
||||
Fields: []*discordgo.MessageEmbedField{
|
||||
{Name: "Type", Value: ticket.Type, Inline: true},
|
||||
{Name: "Utilisateur", Value: fmt.Sprintf("<@%s>", userID), Inline: true},
|
||||
{Name: "Channel", Value: fmt.Sprintf("<#%s>", ticket.ChannelID), Inline: true},
|
||||
{Name: "Numéro", Value: fmt.Sprintf("%04d", ticket.TicketNumber), Inline: true},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func (l *DiscordLogger) LogTicketClaimed(ticket *db.Ticket, staffID string) {
|
||||
l.send(&discordgo.MessageEmbed{
|
||||
Title: "Ticket claim",
|
||||
Color: 0xfee75c,
|
||||
Fields: []*discordgo.MessageEmbedField{
|
||||
{Name: "Staff", Value: fmt.Sprintf("<@%s>", staffID), Inline: true},
|
||||
{Name: "Ticket", Value: fmt.Sprintf("<#%s>", ticket.ChannelID), Inline: true},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func (l *DiscordLogger) LogTicketClosed(ticket *db.Ticket, staffID, reason, transcriptPath string) {
|
||||
embed := &discordgo.MessageEmbed{
|
||||
Title: "Ticket fermé",
|
||||
Color: 0xed4245,
|
||||
Fields: []*discordgo.MessageEmbedField{
|
||||
{Name: "Staff", Value: fmt.Sprintf("<@%s>", staffID), Inline: true},
|
||||
{Name: "Ticket", Value: fmt.Sprintf("%s-%04d", ticket.Type, ticket.TicketNumber), Inline: true},
|
||||
{Name: "Raison", Value: reason},
|
||||
},
|
||||
}
|
||||
l.send(embed)
|
||||
}
|
||||
|
||||
func (l *DiscordLogger) LogConvocationOpened(staffID, targetID, reason, channelID string) {
|
||||
l.send(&discordgo.MessageEmbed{
|
||||
Title: "Convocation ouverte",
|
||||
Color: 0x5865f2,
|
||||
Fields: []*discordgo.MessageEmbedField{
|
||||
{Name: "Staff", Value: fmt.Sprintf("<@%s>", staffID), Inline: true},
|
||||
{Name: "Utilisateur", Value: fmt.Sprintf("<@%s>", targetID), Inline: true},
|
||||
{Name: "Raison", Value: reason},
|
||||
{Name: "Channel", Value: fmt.Sprintf("<#%s>", channelID), Inline: true},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func (l *DiscordLogger) LogError(msg string, fields ...any) {
|
||||
slog.Error(msg, fields...)
|
||||
content := msg
|
||||
l.send(&discordgo.MessageEmbed{
|
||||
Title: "Erreur critique",
|
||||
Description: content,
|
||||
Color: 0xff0000,
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user