private async Task PostPin(IMessage msg) { var builder = new EmbedBuilder(); builder.WithAuthor(a => { a.WithName(msg.Author.Username); a.WithIconUrl(msg.Author.GetAvatarUrl()); }); builder.WithDescription(msg.Content); var links = msg.Content.Split("\t\n ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Where(s => s.StartsWith("http://") || s.StartsWith("www.") || s.StartsWith("https://")); foreach (var s in links) { builder.WithImageUrl(s); } if (msg.Attachments.Any()) { builder.WithImageUrl(msg.Attachments.Last().Url); } builder.WithFooter(f => f.WithText($"Posted {msg.CreatedAt.UtcDateTime} UTC")); var embed = builder.Build(); var pin = await PinChannel.SendMessageAsync(BuildKey(msg), false, embed); AddMsgToPin(msg, pin); }
/// <summary> /// Parses and stores existing pins /// </summary> private async Task ParsePins() { var msgs = PinChannel.GetMessagesAsync(500); await msgs.ForEachAsync(async mlist => { foreach (var pin in mlist) { if (!_client.CurrentUser.Id.Equals(pin.Author.Id)) { continue; } var msg = await ResolveMessageFromPin(pin); if (msg == null) { continue; } AddMsgToPin(msg, pin); } }); }