diff --git a/discord.go b/discord.go index 95f530f2afe770eb25c12e88d83b86e871014e70..86375aa308501a3367c14a24203d02c9854a93a0 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 +}