From bf87adc7f4ddeca0ac6072c5d33abb849a835a4c Mon Sep 17 00:00:00 2001
From: RandomChars <random@chars.jp>
Date: Fri, 7 Jan 2022 15:02:22 +0900
Subject: [PATCH] escape markdown on username

---
 discord.go | 29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)

diff --git a/discord.go b/discord.go
index 95f530f..86375aa 100644
--- a/discord.go
+++ b/discord.go
@@ -152,17 +152,7 @@ func discordHandleCreate(session *discordgo.Session, create *discordgo.MessageCr
 	}
 
 	msg.ParseMode = "MarkdownV2"
-	msg.Text = strings.ReplaceAll(msg.Text, ">", "\\>")
-	msg.Text = strings.ReplaceAll(msg.Text, "_", "\\_")
-	msg.Text = strings.ReplaceAll(msg.Text, "-", "\\-")
-	msg.Text = strings.ReplaceAll(msg.Text, "=", "\\=")
-	msg.Text = strings.ReplaceAll(msg.Text, "*", "\\*")
-	msg.Text = strings.ReplaceAll(msg.Text, "[", "\\[")
-	msg.Text = strings.ReplaceAll(msg.Text, "(", "\\(")
-	msg.Text = strings.ReplaceAll(msg.Text, "`", "\\`")
-	msg.Text = strings.ReplaceAll(msg.Text, ".", "\\.")
-	msg.Text = strings.ReplaceAll(msg.Text, "!", "\\!")
-	msg.Text = strings.ReplaceAll(msg.Text, "~", "\\~")
+	msg.Text = escapeMarkdown(msg.Text)
 	msg.Text = discordMakeHeader(create.Author) + msg.Text
 
 	for i, attachment := range create.Message.Attachments {
@@ -265,6 +255,21 @@ func discordMakeHeader(user *discordgo.User) string {
 	}
 
 	return strings.ReplaceAll(strings.ReplaceAll(config.Discord.NameFormat,
-		"$USER", user.Username),
+		"$USER", escapeMarkdown(user.Username)),
 		"$DISCRIMINATOR", user.Discriminator) + "\n"
 }
+
+func escapeMarkdown(str string) string {
+	str = strings.ReplaceAll(str, ">", "\\>")
+	str = strings.ReplaceAll(str, "_", "\\_")
+	str = strings.ReplaceAll(str, "-", "\\-")
+	str = strings.ReplaceAll(str, "=", "\\=")
+	str = strings.ReplaceAll(str, "*", "\\*")
+	str = strings.ReplaceAll(str, "[", "\\[")
+	str = strings.ReplaceAll(str, "(", "\\(")
+	str = strings.ReplaceAll(str, "`", "\\`")
+	str = strings.ReplaceAll(str, ".", "\\.")
+	str = strings.ReplaceAll(str, "!", "\\!")
+	str = strings.ReplaceAll(str, "~", "\\~")
+	return str
+}
-- 
GitLab