From 3c48e9358f0a839720148e1b241d820c119c1a07 Mon Sep 17 00:00:00 2001
From: freya02 <41875020+freya022@users.noreply.github.com>
Date: Thu, 4 Sep 2025 17:05:23 +0200
Subject: [PATCH 1/4] Add `Invite.Guild#getDescription`
---
.../java/net/dv8tion/jda/api/entities/Guild.java | 3 ++-
.../java/net/dv8tion/jda/api/entities/Invite.java | 10 ++++++++++
.../jda/internal/entities/EntityBuilder.java | 3 ++-
.../dv8tion/jda/internal/entities/InviteImpl.java | 14 +++++++++++---
4 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/src/main/java/net/dv8tion/jda/api/entities/Guild.java b/src/main/java/net/dv8tion/jda/api/entities/Guild.java
index 0d97ca44ec..c14f470aba 100644
--- a/src/main/java/net/dv8tion/jda/api/entities/Guild.java
+++ b/src/main/java/net/dv8tion/jda/api/entities/Guild.java
@@ -915,7 +915,8 @@ default String getVanityUrl()
/**
* The description for this guild.
- *
This is displayed in the server browser below the guild name for verified guilds.
+ *
This is displayed in the server browser below the guild name for verified guilds,
+ * and in embedded invite links.
*
*
The description can be modified using {@link GuildManager#setDescription(String)}.
*
diff --git a/src/main/java/net/dv8tion/jda/api/entities/Invite.java b/src/main/java/net/dv8tion/jda/api/entities/Invite.java
index 7021de4968..54c6a53b9f 100644
--- a/src/main/java/net/dv8tion/jda/api/entities/Invite.java
+++ b/src/main/java/net/dv8tion/jda/api/entities/Invite.java
@@ -358,6 +358,16 @@ interface Channel extends ISnowflake
*/
interface Guild extends ISnowflake
{
+ /**
+ * The description for this guild.
+ *
This is displayed in the server browser below the guild name for verified guilds,
+ * and in embedded invite links.
+ *
+ * @return The guild's description
+ */
+ @Nullable
+ String getDescription();
+
/**
* The icon id of this guild.
*
diff --git a/src/main/java/net/dv8tion/jda/internal/entities/EntityBuilder.java b/src/main/java/net/dv8tion/jda/internal/entities/EntityBuilder.java
index 03b9080e89..d5c017f6ec 100644
--- a/src/main/java/net/dv8tion/jda/internal/entities/EntityBuilder.java
+++ b/src/main/java/net/dv8tion/jda/internal/entities/EntityBuilder.java
@@ -2324,6 +2324,7 @@ else if (channelType.isGuild())
final long guildId = guildObject.getLong("id");
final String guildName = guildObject.getString("name");
final String guildSplashId = guildObject.getString("splash", null);
+ final String description = guildObject.getString("description", null);
final VerificationLevel guildVerificationLevel = VerificationLevel.fromKey(guildObject.getInt("verification_level", -1));
final int presenceCount = object.getInt("approximate_presence_count", -1);
final int memberCount = object.getInt("approximate_member_count", -1);
@@ -2338,7 +2339,7 @@ else if (channelType.isGuild())
? null
: createWelcomeScreen(null, guildObject.getObject("welcome_screen"));
- guild = new InviteImpl.GuildImpl(guildId, guildIconId, guildName, guildSplashId, guildVerificationLevel, presenceCount, memberCount, guildFeatures, welcomeScreen);
+ guild = new InviteImpl.GuildImpl(guildId, guildIconId, guildName, guildSplashId, description, guildVerificationLevel, presenceCount, memberCount, guildFeatures, welcomeScreen);
final String channelName = channelObject.getString("name");
final long channelId = channelObject.getLong("id");
diff --git a/src/main/java/net/dv8tion/jda/internal/entities/InviteImpl.java b/src/main/java/net/dv8tion/jda/internal/entities/InviteImpl.java
index 657026d081..3faa56c45d 100644
--- a/src/main/java/net/dv8tion/jda/internal/entities/InviteImpl.java
+++ b/src/main/java/net/dv8tion/jda/internal/entities/InviteImpl.java
@@ -335,14 +335,14 @@ public String toString()
public static class GuildImpl implements Guild
{
- private final String iconId, name, splashId;
+ private final String iconId, name, splashId, description;
private final int presenceCount, memberCount;
private final long id;
private final VerificationLevel verificationLevel;
private final Set
This is shown in guilds below the guild name.
+ *
+ * @return The guild banner id or null
+ *
+ * @see #getBannerUrl()
+ */
+ @Nullable
+ String getBannerId();
+
+ /**
+ * The guild banner url.
+ *
This is shown in guilds below the guild name.
+ *
+ * @return The guild banner url or null
+ */
+ @Nullable
+ default String getBannerUrl()
+ {
+ String bannerId = getBannerId();
+ return bannerId == null ? null : String.format(BANNER_URL, getId(), bannerId, bannerId.startsWith("a_") ? "gif" : "png");
+ }
+
+ /**
+ * Returns an {@link ImageProxy} for this guild's banner image.
+ *
+ * @return Possibly-null {@link ImageProxy} of this guild's banner image
+ *
+ * @see #getBannerUrl()
+ */
+ @Nullable
+ default ImageProxy getBanner()
+ {
+ final String bannerUrl = getBannerUrl();
+ return bannerUrl == null ? null : new ImageProxy(bannerUrl);
+ }
+
/**
* The description for this guild.
*
This is displayed in the server browser below the guild name for verified guilds,
diff --git a/src/main/java/net/dv8tion/jda/internal/entities/EntityBuilder.java b/src/main/java/net/dv8tion/jda/internal/entities/EntityBuilder.java
index d5c017f6ec..d6429c1825 100644
--- a/src/main/java/net/dv8tion/jda/internal/entities/EntityBuilder.java
+++ b/src/main/java/net/dv8tion/jda/internal/entities/EntityBuilder.java
@@ -2320,6 +2320,7 @@ else if (channelType.isGuild())
final DataObject guildObject = object.getObject("guild");
+ final String guildBannerId = guildObject.getString("banner", null);
final String guildIconId = guildObject.getString("icon", null);
final long guildId = guildObject.getLong("id");
final String guildName = guildObject.getString("name");
@@ -2339,7 +2340,7 @@ else if (channelType.isGuild())
? null
: createWelcomeScreen(null, guildObject.getObject("welcome_screen"));
- guild = new InviteImpl.GuildImpl(guildId, guildIconId, guildName, guildSplashId, description, guildVerificationLevel, presenceCount, memberCount, guildFeatures, welcomeScreen);
+ guild = new InviteImpl.GuildImpl(guildId, guildBannerId, guildIconId, guildName, guildSplashId, description, guildVerificationLevel, presenceCount, memberCount, guildFeatures, welcomeScreen);
final String channelName = channelObject.getString("name");
final long channelId = channelObject.getLong("id");
diff --git a/src/main/java/net/dv8tion/jda/internal/entities/InviteImpl.java b/src/main/java/net/dv8tion/jda/internal/entities/InviteImpl.java
index 3faa56c45d..fdffe4dc78 100644
--- a/src/main/java/net/dv8tion/jda/internal/entities/InviteImpl.java
+++ b/src/main/java/net/dv8tion/jda/internal/entities/InviteImpl.java
@@ -335,18 +335,19 @@ public String toString()
public static class GuildImpl implements Guild
{
- private final String iconId, name, splashId, description;
+ private final String bannerId, iconId, name, splashId, description;
private final int presenceCount, memberCount;
private final long id;
private final VerificationLevel verificationLevel;
private final Set
The returned String will be the code that can be provided to {@code discord.gg/{code}} to get the invite link.
+ *
+ * @return The vanity code or null
+ *
+ * @see #getVanityUrl()
+ */
+ @Nullable
+ String getVanityCode();
+
+ /**
+ * The vanity url for this Guild. The vanity url is the custom invite code of partnered / official / boosted Guilds.
+ *
The returned String will be the vanity invite link to this guild.
+ *
+ * @return The vanity url or null
+ */
+ @Nullable
+ default String getVanityUrl()
+ {
+ return getVanityCode() == null ? null : "https://discord.gg/" + getVanityCode();
+ }
+
/**
* The guild banner id.
*
This is shown in guilds below the guild name.
diff --git a/src/main/java/net/dv8tion/jda/internal/entities/EntityBuilder.java b/src/main/java/net/dv8tion/jda/internal/entities/EntityBuilder.java
index d6429c1825..e46b8c0d8e 100644
--- a/src/main/java/net/dv8tion/jda/internal/entities/EntityBuilder.java
+++ b/src/main/java/net/dv8tion/jda/internal/entities/EntityBuilder.java
@@ -2320,6 +2320,7 @@ else if (channelType.isGuild())
final DataObject guildObject = object.getObject("guild");
+ final String guildVanityCode = guildObject.getString("vanity_url_code", null);
final String guildBannerId = guildObject.getString("banner", null);
final String guildIconId = guildObject.getString("icon", null);
final long guildId = guildObject.getLong("id");
@@ -2340,7 +2341,7 @@ else if (channelType.isGuild())
? null
: createWelcomeScreen(null, guildObject.getObject("welcome_screen"));
- guild = new InviteImpl.GuildImpl(guildId, guildBannerId, guildIconId, guildName, guildSplashId, description, guildVerificationLevel, presenceCount, memberCount, guildFeatures, welcomeScreen);
+ guild = new InviteImpl.GuildImpl(guildId, guildVanityCode, guildBannerId, guildIconId, guildName, guildSplashId, description, guildVerificationLevel, presenceCount, memberCount, guildFeatures, welcomeScreen);
final String channelName = channelObject.getString("name");
final long channelId = channelObject.getLong("id");
diff --git a/src/main/java/net/dv8tion/jda/internal/entities/InviteImpl.java b/src/main/java/net/dv8tion/jda/internal/entities/InviteImpl.java
index fdffe4dc78..1c37a9019d 100644
--- a/src/main/java/net/dv8tion/jda/internal/entities/InviteImpl.java
+++ b/src/main/java/net/dv8tion/jda/internal/entities/InviteImpl.java
@@ -335,18 +335,19 @@ public String toString()
public static class GuildImpl implements Guild
{
- private final String bannerId, iconId, name, splashId, description;
+ private final String vanityCode, bannerId, iconId, name, splashId, description;
private final int presenceCount, memberCount;
private final long id;
private final VerificationLevel verificationLevel;
private final Set