public static async Task SendMediaShareMessageAsync(string from, string message, string amount, DateTime donatedAgo,
                                                            string mediaThumbnailUrl, string mediaUrl, ulong mediaViews, string mediaTitle, string mediaChannelUrl, string mediaChannelTitle)
        {
            if (SettingsManager.Configuration.DiscordChannels.MediaShare == 0)
            {
                return;
            }
            if (!SentMessagesCache.Add(from, message, amount))
            {
                return;
            }

            try {
                if (_DiscordClient.GetChannel(SettingsManager.Configuration.DiscordChannels.MediaShare) is IMessageChannel channel)
                {
                    EmbedBuilder builder = new EmbedBuilder()
                    {
                        Color    = new Color(Constants.YouTubeColor.R, Constants.YouTubeColor.G, Constants.YouTubeColor.B),
                        ImageUrl = mediaThumbnailUrl,
                        Url      = mediaUrl,
                        Title    = mediaTitle
                    };

                    builder.Author = new EmbedAuthorBuilder()
                    {
                        IconUrl = Constants.YouTubeLogoIconUrl,
                        Url     = mediaChannelUrl,
                        Name    = mediaChannelTitle
                    };

                    builder.AddField("Donor / Amount", $"[{from}](https://www.twitch.tv/{from} \"If people are allowed to enter any username when they donate, this Twitch link may not be accurate.{Environment.NewLine}" +
                                     $"Clicking this link will take you to: https://www.twitch.tv/{from}\") / {amount}", true);

                    builder.AddField("Views", mediaViews.ToString("N0", CultureInfo.InvariantCulture), true);

                    if (!string.IsNullOrWhiteSpace(message))
                    {
                        builder.AddField("Message", message);
                    }

                    builder.Footer = new EmbedFooterBuilder()
                    {
                        Text = $"Donated {DateTime.UtcNow.Subtract(donatedAgo).Humanize(2)} ago"
                    };

                    await channel.SendMessageAsync(embed : builder.Build());
                }
            } catch (Exception ex) {
                LoggingManager.Log.Error(ex);
            }
        }
        public static async Task SendSubOrDonationMessageAsync(string message)
        {
            if (SettingsManager.Configuration.DiscordChannels.SubsAndDonations == 0)
            {
                return;
            }
            if (!SentMessagesCache.Add(message))
            {
                return;
            }

            try {
                if (_DiscordClient.GetChannel(SettingsManager.Configuration.DiscordChannels.SubsAndDonations) is IMessageChannel channel)
                {
                    await channel.SendMessageAsync(message);
                }
            } catch (Exception ex) {
                LoggingManager.Log.Error(ex);
            }
        }
        public static async Task SendEventLogMessageAsync(string title, params string[] message)
        {
            string fullMessage = string.Join(Environment.NewLine, message);

            if (SettingsManager.Configuration.DiscordChannels.EventLog == 0)
            {
                return;
            }
            if (!SentMessagesCache.Add($"{title} {fullMessage}"))
            {
                return;
            }

            try {
                if (_DiscordClient.GetChannel(SettingsManager.Configuration.DiscordChannels.EventLog) is IMessageChannel channel)
                {
                    await channel.SendMessageAsync($"● {title}```{Environment.NewLine}{fullMessage}```");
                }
            } catch (Exception ex) {
                LoggingManager.Log.Error(ex);
            }
        }