public static async Task SendDMAsync(DiscordMember targetMember, string textContent, DiscordLinkEmbed embedContent = null) { try { // If needed; split the message into multiple parts ICollection <string> stringParts = MessageUtil.SplitStringBySize(textContent, DLConstants.DISCORD_MESSAGE_CHARACTER_LIMIT); ICollection <DiscordEmbed> embedParts = MessageUtil.BuildDiscordEmbeds(embedContent); if (stringParts.Count <= 1 && embedParts.Count <= 1) { DiscordEmbed embed = (embedParts.Count >= 1) ? embedParts.First() : null; await targetMember.SendMessageAsync(textContent, is_tts : false, embed); } else { foreach (string textMessagePart in stringParts) { await targetMember.SendMessageAsync(textMessagePart, is_tts : false, null); } foreach (DiscordEmbed embedPart in embedParts) { await targetMember.SendMessageAsync(null, is_tts : false, embedPart); } } } catch (Newtonsoft.Json.JsonReaderException e) { Logger.Debug(e.ToString()); } catch (Exception e) { Logger.Error($"Error occurred while attempting to send Discord message to user \"{targetMember.DisplayName}\". Error message: " + e); } }
public static async Task SendAsync(DiscordChannel channel, string textContent, DiscordLinkEmbed embedContent = null) { try { if (!ChannelHasPermission(channel, Permissions.SendMessages)) { return; } // Either make sure we have permission to use embeds or convert the embed to text string fullTextContent = ChannelHasPermission(channel, Permissions.EmbedLinks) ? textContent : MessageBuilder.Discord.EmbedToText(textContent, embedContent); // If needed; split the message into multiple parts ICollection <string> stringParts = MessageUtil.SplitStringBySize(fullTextContent, DLConstants.DISCORD_MESSAGE_CHARACTER_LIMIT); ICollection <DiscordEmbed> embedParts = MessageUtil.BuildDiscordEmbeds(embedContent); if (stringParts.Count <= 1 && embedParts.Count <= 1) { DiscordEmbed embed = (embedParts.Count >= 1) ? embedParts.First() : null; await channel.SendMessageAsync(fullTextContent, tts : false, embed); } else { foreach (string textMessagePart in stringParts) { await channel.SendMessageAsync(textMessagePart, tts : false, null); } foreach (DiscordEmbed embedPart in embedParts) { await channel.SendMessageAsync(null, tts : false, embedPart); } } } catch (Newtonsoft.Json.JsonReaderException e) { Logger.Debug(e.ToString()); } catch (Exception e) { Logger.Error($"Error occurred while attempting to send Discord message to channel \"{channel.Name}\". Error message: " + e); } }