diff --git a/DiscordChatExporter/Services/ExportService.cs b/DiscordChatExporter/Services/ExportService.cs index a435427..71d7cdf 100644 --- a/DiscordChatExporter/Services/ExportService.cs +++ b/DiscordChatExporter/Services/ExportService.cs @@ -1,6 +1,5 @@ using System; using System.IO; -using System.Linq; using System.Net; using System.Text; using System.Text.RegularExpressions; @@ -224,20 +223,12 @@ namespace DiscordChatExporter.Services content = content.Replace("\n", Environment.NewLine); // User mentions (<@id>) - content = Regex.Replace(content, "<@(\\d*)>", - m => - { - var mentionedUser = message.MentionedUsers.First(u => u.Id == m.Groups[1].Value); - return $"@{mentionedUser}"; - }); + foreach (var mentionedUser in message.MentionedUsers) + content = content.Replace($"<@{mentionedUser.Id}>", $"@{mentionedUser}"); // Role mentions (<@&id>) - content = Regex.Replace(content, "<@&(\\d*)>", - m => - { - var mentionedRole = message.MentionedRoles.First(r => r.Id == m.Groups[1].Value); - return $"@{mentionedRole.Name}"; - }); + foreach (var mentionedRole in message.MentionedRoles) + content = content.Replace($"<@&{mentionedRole.Id}>", $"@{mentionedRole.Name}"); // Custom emojis (<:name:id>) content = Regex.Replace(content, "<(:.*?:)\\d*>", "$1"); @@ -259,8 +250,7 @@ namespace DiscordChatExporter.Services content = Regex.Replace(content, "`([^`]+)`", "$1"); // URL links - content = Regex.Replace(content, "((https?|ftp)://[^\\s/$.?#].[^\\s]*)", - "$1"); + content = Regex.Replace(content, "((https?|ftp)://[^\\s/$.?#].[^\\s]*)", "$1"); // Bold (**text**) content = Regex.Replace(content, "\\*\\*([^\\*]*?)\\*\\*", "$1"); @@ -287,24 +277,22 @@ namespace DiscordChatExporter.Services content = content.Replace("@here", "@here"); // User mentions (<@id>) - content = Regex.Replace(content, "<@(\\d*)>", - m => - { - var mentionedUser = message.MentionedUsers.First(u => u.Id == m.Groups[1].Value); - return $"" + - $"@{HtmlEncode(mentionedUser.Name)}" + - ""; - }); + foreach (var mentionedUser in message.MentionedUsers) + { + content = content.Replace($"<@{mentionedUser.Id}>", + $"" + + $"@{HtmlEncode(mentionedUser.Name)}" + + ""); + } // Role mentions (<@&id>) - content = Regex.Replace(content, "<@&(\\d*)>", - m => - { - var mentionedRole = message.MentionedRoles.First(r => r.Id == m.Groups[1].Value); - return "" + - $"@{HtmlEncode(mentionedRole.Name)}" + - ""; - }); + foreach (var mentionedRole in message.MentionedRoles) + { + content = content.Replace($"<@&{mentionedRole.Id}>", + "" + + $"@{HtmlEncode(mentionedRole.Name)}" + + ""); + } // Custom emojis (<:name:id>) content = Regex.Replace(content, "<(:.*?:)(\\d*)>",