Skip to content

Commit ecf724a

Browse files
committed
Implement support for user banners.
See discord/discord-api-docs#6986.
1 parent 264bd52 commit ecf724a

File tree

13 files changed

+27
-0
lines changed

13 files changed

+27
-0
lines changed

Backend/Remora.Discord.API.Abstractions/API/Gateway/Events/Guilds/IGuildMemberUpdate.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,11 @@ public interface IGuildMemberUpdate : IGatewayEvent
5959
/// </summary>
6060
Optional<IImageHash?> Avatar { get; }
6161

62+
/// <summary>
63+
/// Gets the member's guild banner hash.
64+
/// </summary>
65+
Optional<IImageHash?> Banner { get; }
66+
6267
/// <summary>
6368
/// Gets the date when the user joined the guild.
6469
/// </summary>

Backend/Remora.Discord.API.Abstractions/API/Objects/Guilds/IGuildMember.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ public interface IGuildMember : IPartialGuildMember
4848
/// </summary>
4949
new Optional<IImageHash?> Avatar { get; }
5050

51+
/// <summary>
52+
/// Gets the member's guild banner hash.
53+
/// </summary>
54+
new Optional<IImageHash?> Banner { get; }
55+
5156
/// <summary>
5257
/// Gets the roles the user has.
5358
/// </summary>
@@ -102,6 +107,9 @@ public interface IGuildMember : IPartialGuildMember
102107
/// <inheritdoc />
103108
Optional<IImageHash?> IPartialGuildMember.Avatar => this.Avatar;
104109

110+
/// <inheritdoc />
111+
Optional<IImageHash?> IPartialGuildMember.Banner => this.Banner;
112+
105113
/// <inheritdoc/>
106114
Optional<IReadOnlyList<Snowflake>> IPartialGuildMember.Roles => new(this.Roles);
107115

Backend/Remora.Discord.API.Abstractions/API/Objects/Guilds/IPartialGuildMember.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ public interface IPartialGuildMember
4242
/// <inheritdoc cref="IGuildMember.Avatar"/>
4343
Optional<IImageHash?> Avatar { get; }
4444

45+
/// <inheritdoc cref="IGuildMember.Banner"/>
46+
Optional<IImageHash?> Banner { get; }
47+
4548
/// <inheritdoc cref="IGuildMember.Roles" />
4649
Optional<IReadOnlyList<Snowflake>> Roles { get; }
4750

Backend/Remora.Discord.API/API/Gateway/Events/Guilds/GuildMemberAdd.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public record GuildMemberAdd
3737
Optional<IUser> User,
3838
Optional<string?> Nickname,
3939
Optional<IImageHash?> Avatar,
40+
Optional<IImageHash?> Banner,
4041
IReadOnlyList<Snowflake> Roles,
4142
DateTimeOffset JoinedAt,
4243
Optional<DateTimeOffset?> PremiumSince,

Backend/Remora.Discord.API/API/Gateway/Events/Guilds/GuildMemberUpdate.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public record GuildMemberUpdate
4040
IUser User,
4141
Optional<string?> Nickname = default,
4242
Optional<IImageHash?> Avatar = default,
43+
Optional<IImageHash?> Banner = default,
4344
DateTimeOffset? JoinedAt = default,
4445
Optional<DateTimeOffset?> PremiumSince = default,
4546
Optional<bool> IsPending = default,

Backend/Remora.Discord.API/API/Objects/Guilds/GuildMember.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public record GuildMember
3737
Optional<IUser> User,
3838
Optional<string?> Nickname,
3939
Optional<IImageHash?> Avatar,
40+
Optional<IImageHash?> Banner,
4041
IReadOnlyList<Snowflake> Roles,
4142
DateTimeOffset JoinedAt,
4243
Optional<DateTimeOffset?> PremiumSince,

Backend/Remora.Discord.API/API/Objects/Guilds/PartialGuildMember.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public record PartialGuildMember
3737
Optional<IUser> User = default,
3838
Optional<string?> Nickname = default,
3939
Optional<IImageHash?> Avatar = default,
40+
Optional<IImageHash?> Banner = default,
4041
Optional<IReadOnlyList<Snowflake>> Roles = default,
4142
Optional<DateTimeOffset> JoinedAt = default,
4243
Optional<DateTimeOffset?> PremiumSince = default,

Backend/Remora.Discord.Caching/Responders/EarlyCacheResponder.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ public async Task<Result> RespondAsync(IGuildMemberUpdate gatewayEvent, Cancella
188188
new Optional<IUser>(gatewayEvent.User),
189189
gatewayEvent.Nickname.TryGet(out var nickname) ? nickname : cachedInstance.Nickname,
190190
gatewayEvent.Avatar,
191+
gatewayEvent.Banner,
191192
gatewayEvent.Roles,
192193
gatewayEvent.JoinedAt ?? cachedInstance.JoinedAt,
193194
gatewayEvent.PremiumSince.TryGet(out var premiumSince) ? premiumSince : cachedInstance.PremiumSince,
@@ -206,6 +207,7 @@ public async Task<Result> RespondAsync(IGuildMemberUpdate gatewayEvent, Cancella
206207
new Optional<IUser>(gatewayEvent.User),
207208
gatewayEvent.Nickname,
208209
gatewayEvent.Avatar,
210+
gatewayEvent.Banner,
209211
gatewayEvent.Roles,
210212
gatewayEvent.JoinedAt.Value,
211213
gatewayEvent.PremiumSince,

Tests/Remora.Discord.Tests/Samples/Gateway/Events/GUILD_MEMBER_UPDATE/GUILD_MEMBER_UPDATE.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
},
1616
"nick": "none",
1717
"avatar": "68b329da9893e34099c7d8ad5cb9c940",
18+
"banner": "68b329da9893e34099c7d8ad5cb9c940",
1819
"joined_at": "1970-01-01T00:00:00.000000+00:00",
1920
"premium_since": "1970-01-01T00:00:00.000000+00:00",
2021
"deaf": true,

Tests/Remora.Discord.Tests/Samples/Gateway/Events/GUILD_MEMBER_UPDATE/GUILD_MEMBER_UPDATE.nulls.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
},
1616
"nick": null,
1717
"avatar": null,
18+
"banner": null,
1819
"joined_at": null,
1920
"premium_since": null,
2021
"deaf": true,

0 commit comments

Comments
 (0)