public PinsCommands(ILogger <PinsCommands> logger, PinsDbContext database, DiscordWebhookClient webhookClient, PinsService service) { _logger = logger; _database = database; _service = service; _webhookClient = webhookClient; }
public async Task CopyPinAsync(DiscordWebhook hook, DiscordMessage message, GuildInfo info, PinsDbContext db) { var content = new StringBuilder(); var attachments = message.Attachments.ToList(); var messageLink = $"https://discordapp.com/channels/{message.Channel.GuildId}/{message.ChannelId}/{message.Id}"; var embed = new DiscordEmbedBuilder() .WithAuthor($"{message.Author.Username}", messageLink, message.Author.GetAvatarUrl(ImageFormat.Png, 128)) .WithDescription(message.Content.Length <= 1000 ? message.Content : $"{message.Content.Substring(0, 997)}...") .WithTimestamp(message.Timestamp) .WithFooter($"In #{message.Channel.Name}"); if ((message.Author as DiscordMember).Color.Value != default) { embed.WithColor((message.Author as DiscordMember).Color); } foreach (var attachment in attachments) { var ext = Path.GetExtension(attachment.FileName.ToLowerInvariant()); if ((ext == ".jpg" || ext == ".png" || ext == ".gif" || ext == ".webp") && attachment.Width != 0 && embed.ImageUrl == null) { embed.WithImageUrl(attachment.Url); } else { content.AppendLine(attachment.Url); } } var currentMember = message.Channel.Guild.CurrentMember; await hook.ExecuteAsync(content.ToString(), currentMember.Username, currentMember.AvatarUrl, false, new[] { embed.Build() }, null); var dbPin = new PinnedMessage() { GuildId = info.Id, Id = (long)message.Id }; info.PinnedMessages.Add(dbPin); await db.AddAsync(dbPin); }