Browse Source

Resolves #971

pull/1000/head
HelpfulStranger999 8 years ago
parent
commit
4c36ad5e84
4 changed files with 27 additions and 2 deletions
  1. +2
    -0
      src/Discord.Net.Core/CDN.cs
  2. +6
    -0
      src/Discord.Net.Core/Entities/Users/IUser.cs
  3. +10
    -1
      src/Discord.Net.Rest/Entities/Users/RestUser.cs
  4. +9
    -1
      src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs

+ 2
- 0
src/Discord.Net.Core/CDN.cs View File

@@ -13,6 +13,8 @@ namespace Discord
string extension = FormatToExtension(format, avatarId);
return $"{DiscordConfig.CDNUrl}avatars/{userId}/{avatarId}.{extension}?size={size}";
}
public static string GetUserDefaultAvatarUrl(ushort discrim)
=> $"{DiscordConfig.CDNUrl}embed/avatars/{discrim}.png";
public static string GetGuildIconUrl(ulong guildId, string iconId)
=> iconId != null ? $"{DiscordConfig.CDNUrl}icons/{guildId}/{iconId}.jpg" : null;
public static string GetGuildSplashUrl(ulong guildId, string splashId)


+ 6
- 0
src/Discord.Net.Core/Entities/Users/IUser.cs View File

@@ -8,6 +8,10 @@ namespace Discord
string AvatarId { get; }
/// <summary> Gets the url to this user's avatar. </summary>
string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128);
/// <summary> Get the url to this user's custom avatar. </summary>
string GetCustomAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128);
/// <summary> Get the url to this user's default avatar. </summary>
string GetDefaultAvatarUrl();
/// <summary> Gets the per-username unique id for this user. </summary>
string Discriminator { get; }
/// <summary> Gets the per-username unique id for this user. </summary>
@@ -16,6 +20,8 @@ namespace Discord
bool IsBot { get; }
/// <summary> Returns true if this user is a webhook user. </summary>
bool IsWebhook { get; }
/// <summary> Returns true if this user has set a custom avatar. </summary>
bool HasCustomAvatar { get; }
/// <summary> Gets the username for this user. </summary>
string Username { get; }



+ 10
- 1
src/Discord.Net.Rest/Entities/Users/RestUser.cs View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.Diagnostics;
using System.Threading.Tasks;
using Model = Discord.API.User;
@@ -9,6 +9,7 @@ namespace Discord.Rest
public class RestUser : RestEntity<ulong>, IUser, IUpdateable
{
public bool IsBot { get; private set; }
public bool HasCustomeAvatar { get; private set; }
public string Username { get; private set; }
public ushort DiscriminatorValue { get; private set; }
public string AvatarId { get; private set; }
@@ -19,6 +20,7 @@ namespace Discord.Rest
public virtual IActivity Activity => null;
public virtual UserStatus Status => UserStatus.Offline;
public virtual bool IsWebhook => false;
public bool HasCustomAvatar => AvatarId != null;

internal RestUser(BaseDiscordClient discord, ulong id)
: base(discord, id)
@@ -58,13 +60,20 @@ namespace Discord.Rest
=> UserHelper.CreateDMChannelAsync(this, Discord, options);

public string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128)
=> GetCustomAvatarUrl(format, size) ?? GetDefaultAvatarUrl();

public string GetCustomAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128)
=> CDN.GetUserAvatarUrl(Id, AvatarId, size, format);

public string GetDefaultAvatarUrl()
=> CDN.GetUserDefaultAvatarUrl(DiscriminatorValue);

public override string ToString() => $"{Username}#{Discriminator}";
private string DebuggerDisplay => $"{Username}#{Discriminator} ({Id}{(IsBot ? ", Bot" : "")})";

//IUser
async Task<IDMChannel> IUser.GetOrCreateDMChannelAsync(RequestOptions options)
=> await GetOrCreateDMChannelAsync(options);

}
}

+ 9
- 1
src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs View File

@@ -1,4 +1,4 @@
using Discord.Rest;
using Discord.Rest;
using System;
using System.Threading.Tasks;
using Model = Discord.API.User;
@@ -20,6 +20,7 @@ namespace Discord.WebSocket
public string Mention => MentionUtils.MentionUser(Id);
public IActivity Activity => Presence.Activity;
public UserStatus Status => Presence.Status;
public bool HasCustomAvatar => AvatarId != null;

internal SocketUser(DiscordSocketClient discord, ulong id)
: base(discord, id)
@@ -59,10 +60,17 @@ namespace Discord.WebSocket
=> GlobalUser.DMChannel ?? await UserHelper.CreateDMChannelAsync(this, Discord, options) as IDMChannel;

public string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128)
=> GetCustomAvatarUrl(format, size) ?? GetDefaultAvatarUrl();

public string GetCustomAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128)
=> CDN.GetUserAvatarUrl(Id, AvatarId, size, format);

public string GetDefaultAvatarUrl()
=> CDN.GetUserDefaultAvatarUrl(DiscriminatorValue);

public override string ToString() => $"{Username}#{Discriminator}";
private string DebuggerDisplay => $"{Username}#{Discriminator} ({Id}{(IsBot ? ", Bot" : "")})";
internal SocketUser Clone() => MemberwiseClone() as SocketUser;

}
}

Loading…
Cancel
Save