Переглянути джерело

feat: render message embeds (#70)

Closes #69
ayntgl 4 роки тому
батько
коміт
813188198d
1 змінених файлів з 51 додано та 3 видалено
  1. 51 3
      discord.go

+ 51 - 3
discord.go

@@ -244,10 +244,58 @@ func renderMessage(m *discordgo.Message) {
 		if m.EditedTimestamp != "" {
 			b.WriteString(" [::d](edited)[::-]")
 		}
-		// TODO: render message embeds
-		for range m.Embeds {
-			b.WriteString("\n<EMBED>")
+
+		for _, e := range m.Embeds {
+			embedPrefix := fmt.Sprintf("\n[#%06X]|[-::] ", e.Color)
+
+			if e.Author != nil {
+				b.WriteString(embedPrefix)
+
+				b.WriteString("[::u]")
+				b.WriteString(e.Author.Name)
+				b.WriteString("[::-]\n")
+			}
+
+			if e.Title != "" {
+				b.WriteString(embedPrefix)
+
+				b.WriteString("[::b]")
+				b.WriteString(e.Title)
+				b.WriteString("[::-]\n")
+			}
+
+			if e.Description != "" {
+				b.WriteString(embedPrefix)
+
+				b.WriteString("[::d]")
+				b.WriteString(e.Description)
+				b.WriteString("[::-]\n")
+			}
+
+			if e.Footer != nil {
+				b.WriteString(embedPrefix)
+
+				b.WriteString("[::d]")
+				b.WriteString(e.Footer.Text)
+				b.WriteString("[::-]")
+			}
+
+			if len(e.Fields) != 0 {
+				for _, ef := range e.Fields {
+					b.WriteString(embedPrefix)
+
+					b.WriteString("[::b]")
+					b.WriteString(ef.Name)
+					b.WriteString("[::-]\n")
+
+					b.WriteString("[::d]")
+					b.WriteString("  ")
+					b.WriteString(ef.Value)
+					b.WriteString("[::-]")
+				}
+			}
 		}
+
 		// Render the message attachments (attached files to the message).
 		for _, a := range m.Attachments {
 			b.WriteString("\n[")