bannerz W (#2987)
This commit is contained in:
@@ -55,6 +55,14 @@ namespace Discord
|
||||
return $"{DiscordConfig.CDNUrl}guilds/{guildId}/users/{userId}/avatars/{avatarId}.{extension}?size={size}";
|
||||
}
|
||||
|
||||
public static string GetGuildUserBannerUrl(ulong userId, ulong guildId, string bannerId, ushort size, ImageFormat format)
|
||||
{
|
||||
if (bannerId == null)
|
||||
return null;
|
||||
var extension = FormatToExtension(format, bannerId);
|
||||
return $"{DiscordConfig.CDNUrl}guilds/{guildId}/users/{userId}/banners/{bannerId}.{extension}?size={size}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a user banner URL.
|
||||
/// </summary>
|
||||
|
||||
@@ -39,6 +39,7 @@ namespace Discord
|
||||
/// If the user also does not have a regular avatar, this will be <see langword="null"/>.
|
||||
/// </returns>
|
||||
string DisplayAvatarId { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the guild specific avatar for this user.
|
||||
/// </summary>
|
||||
@@ -46,6 +47,15 @@ namespace Discord
|
||||
/// The users guild avatar hash if they have one; otherwise <see langword="null"/>.
|
||||
/// </returns>
|
||||
string GuildAvatarId { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the guild specific banner for this user.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// The user's guild banner hash if they have one; otherwise <see langword="null"/>.
|
||||
/// </returns>
|
||||
string GuildBannerHash { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the guild-level permissions for this user.
|
||||
/// </summary>
|
||||
@@ -147,6 +157,17 @@ namespace Discord
|
||||
/// A string representing the user's guild-specific avatar URL; <see langword="null"/> if the user has no guild avatar set.
|
||||
/// </returns>
|
||||
string GetGuildAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the guild-specific banner URL for this user, if it is set.
|
||||
/// </summary>
|
||||
/// <param name="format">The format of the image.</param>
|
||||
/// <param name="size">The size of the image that matches any power of two, ranging from 16 to 2048.</param>
|
||||
/// <returns>
|
||||
/// A string representing the user's guild-specific banner URL; <see langword="null"/> if the user has no guild banner set.
|
||||
/// </returns>
|
||||
string GetGuildBannerUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128);
|
||||
|
||||
/// <summary>
|
||||
/// Kicks this user from this guild.
|
||||
/// </summary>
|
||||
|
||||
@@ -28,5 +28,8 @@ namespace Discord.API
|
||||
|
||||
[JsonProperty("flags")]
|
||||
public GuildUserFlags Flags { get; set; }
|
||||
|
||||
[JsonProperty("banner")]
|
||||
public Optional<string> Banner { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +29,10 @@ namespace Discord.Rest
|
||||
public string DisplayAvatarId => GuildAvatarId ?? AvatarId;
|
||||
/// <inheritdoc/>
|
||||
public string GuildAvatarId { get; private set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public string GuildBannerHash { get; private set; }
|
||||
|
||||
internal IGuild Guild { get; private set; }
|
||||
/// <inheritdoc />
|
||||
public bool IsDeafened { get; private set; }
|
||||
@@ -122,6 +126,8 @@ namespace Discord.Rest
|
||||
_timedOutTicks = model.TimedOutUntil.Value?.UtcTicks;
|
||||
if (model.Pending.IsSpecified)
|
||||
IsPending = model.Pending.Value;
|
||||
if (model.Banner.IsSpecified)
|
||||
GuildBannerHash = model.Banner.Value;
|
||||
Flags = model.Flags;
|
||||
}
|
||||
private void UpdateRoles(ulong[] roleIds)
|
||||
@@ -200,6 +206,10 @@ namespace Discord.Rest
|
||||
public string GetGuildAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128)
|
||||
=> CDN.GetGuildUserAvatarUrl(Id, GuildId, GuildAvatarId, size, format);
|
||||
|
||||
/// <inheritdoc />
|
||||
public string GetGuildBannerUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128)
|
||||
=> CDN.GetGuildUserBannerUrl(Id, GuildId, GuildBannerHash, size, format);
|
||||
|
||||
/// <inheritdoc />
|
||||
public override string GetDisplayAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128)
|
||||
=> GetGuildAvatarUrl(format, size) ?? base.GetDisplayAvatarUrl(format, size);
|
||||
|
||||
@@ -60,8 +60,12 @@ namespace Discord.Rest
|
||||
/// <inheritdoc />
|
||||
string IGuildUser.GuildAvatarId => null;
|
||||
/// <inheritdoc />
|
||||
string IGuildUser.GuildBannerHash => null;
|
||||
/// <inheritdoc />
|
||||
string IGuildUser.GetGuildAvatarUrl(ImageFormat format, ushort size) => null;
|
||||
/// <inheritdoc />
|
||||
string IGuildUser.GetGuildBannerUrl(ImageFormat format, ushort size) => null;
|
||||
/// <inheritdoc />
|
||||
bool? IGuildUser.IsPending => null;
|
||||
/// <inheritdoc />
|
||||
int IGuildUser.Hierarchy => 0;
|
||||
|
||||
@@ -50,6 +50,9 @@ namespace Discord.WebSocket
|
||||
/// <inheritdoc />
|
||||
public override string GlobalName { get { return GlobalUser.GlobalName; } internal set { GlobalUser.GlobalName = value; } }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public string GuildBannerHash { get; private set; }
|
||||
|
||||
/// <inheritdoc />
|
||||
public GuildPermissions GuildPermissions => new GuildPermissions(Permissions.ResolveGuild(Guild, this));
|
||||
internal override SocketPresence Presence { get; set; }
|
||||
@@ -185,6 +188,8 @@ namespace Discord.WebSocket
|
||||
_timedOutTicks = model.TimedOutUntil.Value?.UtcTicks;
|
||||
if (model.Pending.IsSpecified)
|
||||
IsPending = model.Pending.Value;
|
||||
if (model.Banner.IsSpecified)
|
||||
GuildBannerHash = model.Banner.Value;
|
||||
|
||||
Flags = model.Flags;
|
||||
}
|
||||
@@ -263,6 +268,10 @@ namespace Discord.WebSocket
|
||||
public string GetGuildAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128)
|
||||
=> CDN.GetGuildUserAvatarUrl(Id, Guild.Id, GuildAvatarId, size, format);
|
||||
|
||||
/// <inheritdoc />
|
||||
public string GetGuildBannerUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128)
|
||||
=> CDN.GetGuildUserBannerUrl(Id, Guild.Id, GuildBannerHash, size, format);
|
||||
|
||||
/// <inheritdoc />
|
||||
public override string GetDisplayAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128)
|
||||
=> GetGuildAvatarUrl(format, size) ?? base.GetDisplayAvatarUrl(format, size);
|
||||
|
||||
@@ -72,6 +72,10 @@ namespace Discord.WebSocket
|
||||
public string GuildAvatarId
|
||||
=> GuildUser.GuildAvatarId;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public string GuildBannerHash
|
||||
=> GuildUser.GuildBannerHash;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override ushort DiscriminatorValue
|
||||
{
|
||||
@@ -240,6 +244,9 @@ namespace Discord.WebSocket
|
||||
/// <inheritdoc />
|
||||
string IGuildUser.GetGuildAvatarUrl(ImageFormat format, ushort size) => GuildUser.GetGuildAvatarUrl(format, size);
|
||||
|
||||
/// <inheritdoc />
|
||||
string IGuildUser.GetGuildBannerUrl(ImageFormat format, ushort size) => GuildUser.GetGuildBannerUrl(format, size);
|
||||
|
||||
/// <inheritdoc />
|
||||
public override string GetDisplayAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128)
|
||||
=> GuildUser.GetGuildAvatarUrl() ?? base.GetDisplayAvatarUrl(format, size);
|
||||
|
||||
@@ -75,8 +75,12 @@ namespace Discord.WebSocket
|
||||
/// <inheritdoc />
|
||||
string IGuildUser.GuildAvatarId => null;
|
||||
/// <inheritdoc />
|
||||
string IGuildUser.GuildBannerHash => null;
|
||||
/// <inheritdoc />
|
||||
string IGuildUser.GetGuildAvatarUrl(ImageFormat format, ushort size) => null;
|
||||
/// <inheritdoc />
|
||||
string IGuildUser.GetGuildBannerUrl(ImageFormat format, ushort size) => null;
|
||||
/// <inheritdoc />
|
||||
DateTimeOffset? IGuildUser.PremiumSince => null;
|
||||
/// <inheritdoc />
|
||||
DateTimeOffset? IGuildUser.TimedOutUntil => null;
|
||||
|
||||
Reference in New Issue
Block a user