示例#1
0
        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);
        }
示例#2
0
        /// <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);
                }
            });
        }