/// <summary> /// Adds meta information about the quote to the embed. /// </summary> /// <param name="message">The quoted message.</param> /// <param name="quotingUser">The quoting user.</param> /// <param name="embed">The embed to add the information to.</param> private static Embed AddMeta ( IMessage message, Snowflake quotingUser, Embed embed ) { var getUserAvatar = CDN.GetUserAvatarUrl(message.Author); var author = new EmbedAuthor($"{message.Author.Username}#{message.Author.Discriminator}") { IconUrl = getUserAvatar.IsSuccess ? getUserAvatar.Entity.ToString() : default(Optional <string>) }; return(embed with { Author = author, Footer = new EmbedFooter(GetPostedTimeInfo(message)), Colour = Color.FromArgb(95, 186, 125), Fields = new[] { CreateQuoteMarkerField(message, quotingUser) } }); }
public async Task TextAvatar(SocketUser user = null, String text = "TEXT", String text1 = "", String text2 = "", String text3 = "", String text4 = "") { int nbArgument = 1; if (text4 != "") { nbArgument = 5; } if (text3 != "" && text4 == "") { nbArgument = 4; } if (text2 != "" && text3 == "") { nbArgument = 3; } if (text1 != "" && text2 == "") { nbArgument = 2; } EditImage editImage = new EditImage(CDN.GetUserAvatarUrl(user.Id, user.AvatarId, 512, ImageFormat.Auto)); Console.WriteLine(user.GetAvatarUrl()); editImage.writeMessageOnImage(text, text1, text2, text3, text4, nbArgument); await Context.Channel.SendFileAsync("image\\update.png"); }
public async Task <IResult> ListNotesAsync(IUser user) { var notes = await _notes.GetNotesAsync(_context.GuildID.Value, user.ID); var createPages = await PaginatedEmbedFactory.PagesFromCollectionAsync ( notes, async note => { var getAuthor = await _userAPI.GetUserAsync(note.Author.DiscordID); if (!getAuthor.IsSuccess) { return(Result <Embed> .FromError(getAuthor)); } var author = getAuthor.Entity; var getAuthorAvatar = CDN.GetUserAvatarUrl(author); var embedFields = new List <EmbedField>(); var eb = new Embed { Title = $"Note #{note.ID} for {user.Username}:{user.Discriminator}", Colour = Color.Gold, Author = new EmbedAuthor(author.Username) { IconUrl = getAuthorAvatar.IsSuccess ? getAuthorAvatar.Entity.ToString() : default(Optional <string>) }, Description = note.Content, Fields = embedFields }; embedFields.Add(new EmbedField("Created", note.CreatedAt.Humanize())); if (note.CreatedAt != note.UpdatedAt) { embedFields.Add(new EmbedField("Last Updated", note.UpdatedAt.Humanize())); } return(eb); } ); if (createPages.Any(p => !p.IsSuccess)) { return(createPages.First(p => !p.IsSuccess)); } var pages = createPages.Select(p => p.Entity).ToList(); return((Result)await _feedback.SendContextualPaginatedMessageAsync ( _context.User.ID, pages, ct : this.CancellationToken )); }
public async Task <IResult> InfoDiscord(IUser user) { var fields = new List <EmbedField>(); var iconUrl = new Optional <string>(); var embedThumbnail = user.Avatar?.Value is null ? new Optional <IEmbedThumbnail>() : CDN.GetUserAvatarUrl(user, CDNImageFormat.PNG) switch { { IsSuccess : true, Entity : { } e } => new EmbedThumbnail(e.ToString()),
public async Task DistortionAvatar(SocketUser user = null, ushort size = 512) { EditImage editImage = new EditImage(CDN.GetUserAvatarUrl(user.Id, user.AvatarId, size, ImageFormat.Auto)); Console.WriteLine(user.GetAvatarUrl()); editImage.Brightness(); await Context.Channel.SendFileAsync("image\\update.png", "Caption goes here"); }
public async Task AvatarAsync(SocketUser user = null, ushort size = 512) { if (user == null) { await ReplyAsync(CDN.GetUserAvatarUrl(Context.User.Id, Context.User.AvatarId, size, ImageFormat.Auto)); } else { await ReplyAsync(CDN.GetUserAvatarUrl(user.Id, user.AvatarId, size, ImageFormat.Auto)); // await ReplyAsync(user.GetAvatarUrl()); } }
public void ReturnsUnsuccessfulResultIfInstanceHasNoImage() { var userID = new Snowflake(0); var mockedUser = new Mock <IUser>(); mockedUser.SetupGet(g => g.Avatar).Returns((IImageHash?)null); mockedUser.SetupGet(g => g.ID).Returns(userID); var user = mockedUser.Object; var getActual = CDN.GetUserAvatarUrl(user, CDNImageFormat.PNG); Assert.False(getActual.IsSuccess); Assert.IsType <ImageNotFoundError>(getActual.Unwrap()); }
public void ReturnsCorrectAddressWithAnimatedImageAndCustomFormat() { var expected = new Uri("https://cdn.discordapp.com/avatars/0/a_1.png"); var userID = new Snowflake(0); var imageHash = new ImageHash("a_1"); var mockedUser = new Mock <IUser>(); mockedUser.SetupGet(g => g.Avatar).Returns(imageHash); mockedUser.SetupGet(g => g.ID).Returns(userID); var user = mockedUser.Object; var getActual = CDN.GetUserAvatarUrl(user, CDNImageFormat.PNG); Assert.True(getActual.IsSuccess); Assert.Equal(expected, getActual.Entity); }
/// <inheritdoc /> protected override IEnumerable <Result <Uri> > GetImageUris ( Optional <CDNImageFormat> imageFormat = default, Optional <ushort> imageSize = default ) { var userID = new Snowflake(0); var imageHash = new ImageHash("1"); var mockedUser = new Mock <IUser>(); mockedUser.SetupGet(g => g.Avatar).Returns(imageHash); mockedUser.SetupGet(g => g.ID).Returns(userID); var user = mockedUser.Object; yield return(CDN.GetUserAvatarUrl(user, imageFormat, imageSize)); yield return(CDN.GetUserAvatarUrl(userID, imageHash, imageFormat, imageSize)); }
public string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128) => CDN.GetUserAvatarUrl(Id, AvatarId, size, format);
/// <inheritdoc /> public string GetAvatarUrlOrDefault(ImageFormat format = ImageFormat.Auto, ushort size = 128) => CDN.GetUserAvatarUrl(Id, AvatarId, size, format) ?? CDN.GetDefaultUserAvatarUrl(DiscriminatorValue);
public async Task <IResult> ListBansAsync() { var bans = await _bans.GetBansAsync(_context.GuildID.Value); var createPages = await PaginatedEmbedFactory.PagesFromCollectionAsync ( bans, async ban => { var getBanAuthor = await _userAPI.GetUserAsync(ban.Author.DiscordID); if (!getBanAuthor.IsSuccess) { return(Result <Embed> .FromError(getBanAuthor)); } var banAuthor = getBanAuthor.Entity; var getBannedUser = await _userAPI.GetUserAsync(ban.User.DiscordID); if (!getBannedUser.IsSuccess) { return(Result <Embed> .FromError(getBannedUser)); } var bannedUser = getBanAuthor.Entity; var getBanAuthorAvatar = CDN.GetUserAvatarUrl(banAuthor); var embedFields = new List <IEmbedField>(); var eb = new Embed { Title = $"Ban #{ban.ID} for {bannedUser.Username}:{bannedUser.Discriminator}", Colour = Color.Orange, Author = new EmbedAuthor(banAuthor.Username) { Url = getBanAuthorAvatar.IsSuccess ? getBanAuthorAvatar.Entity.ToString() : default(Optional <string>) }, Description = ban.Reason, Fields = embedFields }; embedFields.Add(new EmbedField("Created", ban.CreatedAt.Humanize())); if (ban.CreatedAt != ban.UpdatedAt) { embedFields.Add(new EmbedField("Last Updated", ban.UpdatedAt.Humanize())); } if (ban.ExpiresOn.HasValue) { embedFields.Add(new EmbedField("Expires On", ban.ExpiresOn.Humanize())); } if (ban.MessageID is not null) { // TODO } return(eb); } ); if (createPages.Any(p => !p.IsSuccess)) { return(createPages.First(p => !p.IsSuccess)); } var pages = createPages.Select(p => p.Entity).ToList(); return((Result)await _feedback.SendContextualPaginatedMessageAsync ( _context.User.ID, pages, ct : this.CancellationToken )); }
/// <summary> /// Shows a nicely formatted info block about a user. /// </summary> /// <param name="discordUser">The Discord user to show the info of.</param> /// <param name="user">The stored information about the user.</param> private async Task <Result> ShowUserInfoAsync(IUser discordUser, User user) { var embedFields = new List <IEmbedField>(); var getUserAvatar = CDN.GetUserAvatarUrl(discordUser); var embed = new Embed { Author = new EmbedAuthor ( $"{discordUser.Username}#{discordUser.Discriminator}", IconUrl: getUserAvatar.IsSuccess ? getUserAvatar.Entity.ToString() : default(Optional <string>) ), Thumbnail = new EmbedThumbnail ( getUserAvatar.IsSuccess ? getUserAvatar.Entity.ToString() : string.Empty ), Fields = embedFields }; if (_context.GuildID.IsDefined(out var guildID)) { var getMember = await _guildAPI.GetGuildMemberAsync ( guildID, discordUser.ID, this.CancellationToken ); if (!getMember.IsSuccess) { return(Result.FromError(getMember)); } var member = getMember.Entity; if (member.Roles.Count > 0) { var getRoles = await _guildAPI.GetGuildRolesAsync(guildID, this.CancellationToken); if (!getRoles.IsSuccess) { return(Result.FromError(getRoles)); } var roles = getRoles.Entity; var primaryRole = roles.OrderByDescending(r => r.Position).First(r => member.Roles.Contains(r.ID)); embed = embed with { Colour = primaryRole.Colour }; } } else { embed = embed with { Colour = Color.LightSlateGray }; } embedFields.Add(new EmbedField("Name", discordUser.Username)); string timezoneValue; if (user.Timezone is null) { timezoneValue = "No timezone set."; } else { timezoneValue = "UTC"; if (user.Timezone >= 0) { timezoneValue += "+"; } timezoneValue += user.Timezone.Value; } embedFields.Add(new EmbedField("Timezone", timezoneValue)); var bioValue = string.IsNullOrEmpty(user.Bio) ? "No bio set." : user.Bio; embedFields.Add(new EmbedField("Bio", bioValue)); var technicalInfo = new StringBuilder(); technicalInfo.AppendLine($"ID: {discordUser.ID}"); var span = DateTimeOffset.UtcNow - discordUser.ID.Timestamp; var humanizedTimeAgo = span > TimeSpan.FromSeconds(60) ? span.Humanize(maxUnit: TimeUnit.Year, culture: CultureInfo.InvariantCulture) : "a few seconds"; var created = $"{humanizedTimeAgo} ago ({discordUser.ID.Timestamp.UtcDateTime:yyyy-MM-ddTHH:mm:ssK})\n"; technicalInfo.AppendLine($"Created: {created}"); embedFields.Add(new EmbedField("Technical Info", technicalInfo.ToString())); var sendEmbed = await _channelAPI.CreateMessageAsync ( _context.ChannelID, embeds : new[] { embed }, ct : this.CancellationToken ); return(sendEmbed.IsSuccess ? Result.FromSuccess() : Result.FromError(sendEmbed)); }
public async Task AvatarAsync(ushort size = 512) { await ReplyAsync(CDN.GetUserAvatarUrl(Context.User.Id, Context.User.AvatarId, size, ImageFormat.Auto)); }
public async Task AvatarAsync(ushort size = 512) { await ReplyAsync(Context.User.Username + " la photo de ton avatar est :"); await ReplyAsync(CDN.GetUserAvatarUrl(Context.User.Id, Context.User.AvatarId, size, ImageFormat.Auto)); }