docs
This commit is contained in:
parent
2785048de8
commit
444ae3f7c0
@ -121,7 +121,14 @@ public final class DiscordUser {
|
||||
*/
|
||||
@AllArgsConstructor @Getter
|
||||
public static class UserFlags {
|
||||
private final EnumSet<User.UserFlag> list;
|
||||
/**
|
||||
* The list of flags the user has.
|
||||
*/
|
||||
@NonNull private final EnumSet<User.UserFlag> list;
|
||||
|
||||
/**
|
||||
* The raw flags the user has.
|
||||
*/
|
||||
private final int raw;
|
||||
}
|
||||
|
||||
@ -130,7 +137,14 @@ public final class DiscordUser {
|
||||
*/
|
||||
@AllArgsConstructor @Getter
|
||||
public static class Avatar {
|
||||
/**
|
||||
* The id of the user's avatar.
|
||||
*/
|
||||
@NonNull private final String id;
|
||||
|
||||
/**
|
||||
* The URL of the user's avatar.
|
||||
*/
|
||||
@NonNull private final String url;
|
||||
}
|
||||
|
||||
@ -139,7 +153,14 @@ public final class DiscordUser {
|
||||
*/
|
||||
@AllArgsConstructor @Getter
|
||||
public static class Banner {
|
||||
/**
|
||||
* The id of the user's avatar.
|
||||
*/
|
||||
@NonNull private final String id;
|
||||
|
||||
/**
|
||||
* The URL of the user's avatar.
|
||||
*/
|
||||
@NonNull private final String url;
|
||||
}
|
||||
|
||||
@ -148,11 +169,39 @@ public final class DiscordUser {
|
||||
*/
|
||||
@AllArgsConstructor @Getter
|
||||
public static class SpotifyActivity {
|
||||
/**
|
||||
* The currently playing song.
|
||||
*/
|
||||
@NonNull private final String song;
|
||||
|
||||
/**
|
||||
* The currently playing artist.
|
||||
*/
|
||||
@NonNull private final String artist;
|
||||
|
||||
/**
|
||||
* The album the song is from.
|
||||
*/
|
||||
@NonNull private final String album;
|
||||
|
||||
/**
|
||||
* The current progress of the track.
|
||||
*/
|
||||
@NonNull private final String trackProgress;
|
||||
|
||||
/**
|
||||
* The total length of the track.
|
||||
*/
|
||||
@NonNull private final String trackLength;
|
||||
|
||||
/**
|
||||
* The unix time of when this track started playing.
|
||||
*/
|
||||
private final long started;
|
||||
|
||||
/**
|
||||
* The unix time of when this track stops playing.
|
||||
*/
|
||||
private final long ends;
|
||||
|
||||
/**
|
||||
@ -161,7 +210,7 @@ public final class DiscordUser {
|
||||
* @param richPresence the raw Discord data
|
||||
* @return the built Spotify activity
|
||||
*/
|
||||
@NonNull
|
||||
@NonNull @SuppressWarnings("DataFlowIssue")
|
||||
public static SpotifyActivity fromActivity(@NonNull RichPresence richPresence) {
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("m:ss");
|
||||
long started = Objects.requireNonNull(richPresence.getTimestamps()).getStart();
|
||||
@ -171,9 +220,9 @@ public final class DiscordUser {
|
||||
long trackProgress = Math.min(System.currentTimeMillis() - started, trackLength);
|
||||
|
||||
return new SpotifyActivity(
|
||||
Objects.requireNonNull(richPresence.getDetails()), Objects.requireNonNull(richPresence.getState()).replace(";", ","),
|
||||
richPresence.getDetails(), richPresence.getState().replace(";", ","),
|
||||
dateFormat.format(trackProgress), dateFormat.format(trackLength),
|
||||
started, ends
|
||||
richPresence.getLargeImage().getText(), started, ends
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -72,20 +72,9 @@ public final class DiscordService {
|
||||
throw new BadRequestException("Not a valid snowflake");
|
||||
}
|
||||
try {
|
||||
// First try to locate the user in a guild
|
||||
Member member = null;
|
||||
try {
|
||||
for (Guild guild : jda.getGuilds()) {
|
||||
if ((member = guild.retrieveMemberById(snowflake).complete()) != null) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
} catch (ErrorResponseException ex) {
|
||||
if (ex.getErrorCode() != 10007) {
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
// Then retrieve the user
|
||||
Member member = getMember(snowflake); // First try to locate the member in a guild
|
||||
|
||||
// Then retrieve the user (first try the cache)
|
||||
CachedDiscordUser cachedUser = cachedUsers.getIfPresent(snowflake);
|
||||
boolean fromCache = cachedUser != null;
|
||||
if (cachedUser == null) { // No cache, retrieve fresh data
|
||||
@ -130,4 +119,26 @@ public final class DiscordService {
|
||||
self.getAsTag(), inviteUrl
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a member from a guild by their snowflake.
|
||||
*
|
||||
* @param snowflake the user's snowflake
|
||||
* @return the member, null if none
|
||||
*/
|
||||
private Member getMember(long snowflake) {
|
||||
Member member = null;
|
||||
try {
|
||||
for (Guild guild : jda.getGuilds()) {
|
||||
if ((member = guild.retrieveMemberById(snowflake).complete()) != null) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
} catch (ErrorResponseException ex) {
|
||||
if (ex.getErrorCode() != 10007) {
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
return member;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user