From 202ddf5dac3565a06fb60f70a2e952025d9fc207 Mon Sep 17 00:00:00 2001 From: sxpphickat Date: Wed, 25 Sep 2024 15:29:07 -0300 Subject: [PATCH] feat(messages): base of message reply --- internals/discord/bot/events/messages.go | 29 +++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/internals/discord/bot/events/messages.go b/internals/discord/bot/events/messages.go index f53a071..685b029 100644 --- a/internals/discord/bot/events/messages.go +++ b/internals/discord/bot/events/messages.go @@ -7,6 +7,7 @@ import ( "dislate/internals/translator" "dislate/internals/translator/lang" e "errors" + "fmt" "log/slog" "slices" "sync" @@ -27,7 +28,7 @@ func (h MessageCreate) Serve( s *dgo.Session, ev *dgo.MessageCreate, ) errors.EventErr { - if ev.Message.Author.Bot || ev.Type != dgo.MessageTypeDefault { + if ev.Message.Author.Bot || (ev.Type != dgo.MessageTypeDefault && ev.Type != dgo.MessageTypeReply) { return nil } @@ -109,6 +110,9 @@ func (h MessageCreate) sendMessage( return } + if msg.Type == dgo.MessageTypeReply { + t = createReply(msg, t) + } var tdm *dgo.Message if dch.IsThread() { tdm, err = s.WebhookThreadExecute(uw.ID, uw.Token, true, dch.ID, &dgo.WebhookParams{ @@ -155,6 +159,25 @@ func (h MessageCreate) sendMessage( return nil } +func getMessageLink(msg *dgo.MessageReference) string { + return fmt.Sprintf("https://discord.com/channels/%s/%s/%s", msg.GuildID, msg.ChannelID, msg.MessageID) +} + +func createReply(msg *dgo.Message, t string) string { + msgThreshold := 100 + if len(msg.ReferencedMessage.Content) < 100 { + msgThreshold = len(msg.ReferencedMessage.Content) + } + // ↩️ or ➡️ ?? + replyMessage := fmt.Sprintf("↩️<@%s>: [`%s...`](%s)\n%s", + msg.ReferencedMessage.Author.ID, + msg.ReferencedMessage.Content[:msgThreshold], + getMessageLink(msg.MessageReference), + t) + + return replyMessage +} + type MessageUpdate struct { db gconf.DB translator translator.Translator @@ -165,7 +188,7 @@ func NewMessageUpdate(db gconf.DB, t translator.Translator) MessageUpdate { } func (h MessageUpdate) Serve(s *dgo.Session, ev *dgo.MessageUpdate) errors.EventErr { - if ev.Message.Author.Bot || ev.Type != dgo.MessageTypeDefault { + if ev.Message.Author.Bot || (ev.Type != dgo.MessageTypeDefault && ev.Type != dgo.MessageTypeReply) { return nil } @@ -263,7 +286,7 @@ func NewMessageDelete(db gconf.DB) MessageDelete { } func (h MessageDelete) Serve(s *dgo.Session, ev *dgo.MessageDelete) errors.EventErr { - if ev.Type != dgo.MessageTypeDefault { + if ev.Type != dgo.MessageTypeDefault && ev.Type != dgo.MessageTypeReply { return nil }