Skip to content
This repository was archived by the owner on Jun 9, 2024. It is now read-only.

Commit 6d97ee0

Browse files
committed
feature: Guild member avatars (closes #557)
1 parent 066f6fd commit 6d97ee0

File tree

4 files changed

+28
-0
lines changed

4 files changed

+28
-0
lines changed

src/main/java/com/mewna/catnip/entity/guild/Member.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@
3535
import com.mewna.catnip.entity.partials.Permissable;
3636
import com.mewna.catnip.entity.user.User;
3737
import com.mewna.catnip.entity.user.VoiceState;
38+
import com.mewna.catnip.entity.util.ImageOptions;
3839
import com.mewna.catnip.entity.util.Permission;
40+
import com.mewna.catnip.util.CDNFormat;
3941
import com.mewna.catnip.util.PermissionUtil;
4042
import com.mewna.catnip.util.rx.RxHelpers;
4143
import io.reactivex.rxjava3.core.Completable;
@@ -196,6 +198,23 @@ default Maybe<VoiceState> voiceState() {
196198
@CheckReturnValue
197199
OffsetDateTime premiumSince();
198200

201+
/**
202+
* @return The hash of the user's per-guild avatar.
203+
*/
204+
@Nullable
205+
@CheckReturnValue
206+
String avatarHash();
207+
208+
@Nullable
209+
@CheckReturnValue
210+
default String avatarUrl(@Nonnull final ImageOptions options) {
211+
if(avatarHash() == null) {
212+
return null;
213+
}
214+
//noinspection ConstantConditions
215+
return CDNFormat.guildAvatarUrl(guildId(), id(), avatarHash(), options);
216+
}
217+
199218
/**
200219
* The member's color, as shown in the official Discord Client, or {@code null} if they have no roles with a color.
201220
* <br>This will iterate over all the roles this member has, so try to avoid calling this method multiple times

src/main/java/com/mewna/catnip/entity/impl/EntityBuilder.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -728,6 +728,7 @@ public Member createMember(@Nonnull final String guildId, @Nonnull final String
728728
.roleIds(toStringSet(data.getArray("roles")))
729729
.joinedAt(joinedAt)
730730
.premiumSince(data.getString("premium_since", null))
731+
.avatarHash(data.getString("avatar"))
731732
.build());
732733
}
733734

src/main/java/com/mewna/catnip/entity/impl/guild/MemberImpl.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ public class MemberImpl implements Member, RequiresCatnip, Timestamped {
5858
private Set<String> roleIds;
5959
private String joinedAt;
6060
private String premiumSince;
61+
private String avatarHash;
6162

6263
@Nonnull
6364
@Override

src/main/java/com/mewna/catnip/util/CDNFormat.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,4 +138,11 @@ public static String roleIconUrl(@Nonnull final String roleId, @Nonnull final St
138138
@Nonnull final ImageOptions options) {
139139
return options.buildUrl(String.format("https://cdn.discordapp.com/role-icons/%s/%s", roleId, iconHash));
140140
}
141+
142+
@Nonnull
143+
@CheckReturnValue
144+
public static String guildAvatarUrl(@Nonnull final String guildId, @Nonnull final String userId,
145+
@Nonnull final String hash, @Nonnull final ImageOptions options) {
146+
return options.buildUrl(String.format("https://cdn.discordapp.com/guilds/%s/%s/%s", guildId, userId, hash));
147+
}
141148
}

0 commit comments

Comments
 (0)