From 77ee5aec12446ae852b6d949d1e86803f44f7bf0 Mon Sep 17 00:00:00 2001
From: Daedalus <16168171+RedDaedalus@users.noreply.github.com>
Date: Tue, 8 Aug 2023 20:48:39 -0600
Subject: [PATCH 1/6] Add custom status support for bots
---
.../java/net/dv8tion/jda/api/entities/Activity.java | 9 +++++++++
.../dv8tion/jda/internal/managers/PresenceImpl.java | 10 +++++++++-
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/src/main/java/net/dv8tion/jda/api/entities/Activity.java b/src/main/java/net/dv8tion/jda/api/entities/Activity.java
index fe21821120..80056cd9d4 100644
--- a/src/main/java/net/dv8tion/jda/api/entities/Activity.java
+++ b/src/main/java/net/dv8tion/jda/api/entities/Activity.java
@@ -230,6 +230,15 @@ static Activity competing(@Nonnull String name)
return EntityBuilder.createActivity(name, null, ActivityType.COMPETING);
}
+ @Nonnull
+ static Activity customStatus(@Nonnull String name)
+ {
+ Checks.notBlank(name, "Name");
+ name = name.trim();
+ Checks.notLonger(name, 128, "Name");
+ return EntityBuilder.createActivity(name, null, ActivityType.CUSTOM_STATUS);
+ }
+
/**
* Creates a new Activity instance with the specified name.
*
diff --git a/src/main/java/net/dv8tion/jda/internal/managers/PresenceImpl.java b/src/main/java/net/dv8tion/jda/internal/managers/PresenceImpl.java
index c1ec83cb30..06e16dca72 100644
--- a/src/main/java/net/dv8tion/jda/internal/managers/PresenceImpl.java
+++ b/src/main/java/net/dv8tion/jda/internal/managers/PresenceImpl.java
@@ -184,7 +184,15 @@ private DataObject getGameJson(Activity activity)
if (activity == null || activity.getName() == null || activity.getType() == null)
return null;
DataObject gameObj = DataObject.empty();
- gameObj.put("name", activity.getName());
+
+ if (activity.getType() == Activity.ActivityType.CUSTOM_STATUS)
+ {
+ gameObj.put("name", "Custom Status");
+ gameObj.put("state", activity.getName());
+ } else {
+ gameObj.put("name", activity.getName());
+ }
+
gameObj.put("type", activity.getType().getKey());
if (activity.getUrl() != null)
gameObj.put("url", activity.getUrl());
From 8a6cc638a6c09af7c525a4542f3688a2e09b50a5 Mon Sep 17 00:00:00 2001
From: Daedalus <16168171+RedDaedalus@users.noreply.github.com>
Date: Tue, 8 Aug 2023 20:52:14 -0600
Subject: [PATCH 2/6] docs
---
.../net/dv8tion/jda/api/entities/Activity.java | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/src/main/java/net/dv8tion/jda/api/entities/Activity.java b/src/main/java/net/dv8tion/jda/api/entities/Activity.java
index 80056cd9d4..2a0530dff1 100644
--- a/src/main/java/net/dv8tion/jda/api/entities/Activity.java
+++ b/src/main/java/net/dv8tion/jda/api/entities/Activity.java
@@ -230,6 +230,20 @@ static Activity competing(@Nonnull String name)
return EntityBuilder.createActivity(name, null, ActivityType.COMPETING);
}
+ /**
+ * Creates a new Activity instance with the specified name.
+ *
This will display without a prefix in the official client
+ *
+ * @param name
+ * The not-null name of the newly created status
+ *
+ * @throws IllegalArgumentException
+ * If the specified name is null, empty, blank or longer than 128 characters
+ *
+ * @return A valid Activity instance with the provided name with {@link net.dv8tion.jda.api.entities.Activity.ActivityType#CUSTOM_STATUS}
+ *
+ * @since 5.0.0
+ */
@Nonnull
static Activity customStatus(@Nonnull String name)
{
From e23d1040526d5e91a3e9341a220858e5d434a64f Mon Sep 17 00:00:00 2001
From: Daedalus <16168171+RedDaedalus@users.noreply.github.com>
Date: Tue, 8 Aug 2023 22:39:03 -0600
Subject: [PATCH 3/6] Remove outdated `@Incubating` annotations
---
.../java/net/dv8tion/jda/api/entities/Activity.java | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/src/main/java/net/dv8tion/jda/api/entities/Activity.java b/src/main/java/net/dv8tion/jda/api/entities/Activity.java
index 2a0530dff1..a159c8e005 100644
--- a/src/main/java/net/dv8tion/jda/api/entities/Activity.java
+++ b/src/main/java/net/dv8tion/jda/api/entities/Activity.java
@@ -15,7 +15,6 @@
*/
package net.dv8tion.jda.api.entities;
-import net.dv8tion.jda.annotations.Incubating;
import net.dv8tion.jda.api.entities.emoji.Emoji;
import net.dv8tion.jda.api.entities.emoji.EmojiUnion;
import net.dv8tion.jda.internal.entities.EntityBuilder;
@@ -194,11 +193,8 @@ static Activity listening(@Nonnull String name)
* if the specified name is null, empty, blank or longer than 128 characters
*
* @return A valid Activity instance with the provided name with {@link net.dv8tion.jda.api.entities.Activity.ActivityType#WATCHING}
- *
- * @incubating This feature is not yet confirmed for the official bot API
*/
@Nonnull
- @Incubating
static Activity watching(@Nonnull String name)
{
Checks.notBlank(name, "Name");
@@ -354,18 +350,12 @@ enum ActivityType
/**
* Used to indicate that the {@link Activity Activity} should display
* as {@code Watching...} in the official client.
- *
- * @incubating This feature is not yet confirmed for the official bot API
*/
- @Incubating
WATCHING(3),
/**
* Used to indicate that the {@link Activity Activity} should display as a custom status
* in the official client.
- *
- * @incubating This Activity type is read-only for bots
*/
- @Incubating
CUSTOM_STATUS(4),
/**
From f87bffa4f48590968312ff8f6c202b52957f2a00 Mon Sep 17 00:00:00 2001
From: Daedalus <16168171+RedDaedalus@users.noreply.github.com>
Date: Tue, 8 Aug 2023 22:43:38 -0600
Subject: [PATCH 4/6] Remove direct "Custom Status" check for custom status
deserialization
---
.../java/net/dv8tion/jda/internal/entities/EntityBuilder.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
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 2b4fc0d644..7a63c0ca2d 100644
--- a/src/main/java/net/dv8tion/jda/internal/entities/EntityBuilder.java
+++ b/src/main/java/net/dv8tion/jda/internal/entities/EntityBuilder.java
@@ -931,7 +931,7 @@ public static Activity createActivity(DataObject gameJson)
if (type == Activity.ActivityType.CUSTOM_STATUS)
{
- if (gameJson.hasKey("state") && name.equalsIgnoreCase("Custom Status"))
+ if (gameJson.hasKey("state"))
{
name = gameJson.getString("state", "");
gameJson = gameJson.remove("state");
From 18ad5cc97e14b3388d6a566678a4a24cea4d14b6 Mon Sep 17 00:00:00 2001
From: Daedalus <16168171+RedDaedalus@users.noreply.github.com>
Date: Wed, 9 Aug 2023 13:03:05 -0600
Subject: [PATCH 5/6] Update
src/main/java/net/dv8tion/jda/internal/managers/PresenceImpl.java
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Florian Spieß
---
.../java/net/dv8tion/jda/internal/managers/PresenceImpl.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/main/java/net/dv8tion/jda/internal/managers/PresenceImpl.java b/src/main/java/net/dv8tion/jda/internal/managers/PresenceImpl.java
index 06e16dca72..c858fcdeb8 100644
--- a/src/main/java/net/dv8tion/jda/internal/managers/PresenceImpl.java
+++ b/src/main/java/net/dv8tion/jda/internal/managers/PresenceImpl.java
@@ -189,7 +189,9 @@ private DataObject getGameJson(Activity activity)
{
gameObj.put("name", "Custom Status");
gameObj.put("state", activity.getName());
- } else {
+ }
+ else
+ {
gameObj.put("name", activity.getName());
}
From 098727251d7ee5850a77eabf0bf22c22d534336a Mon Sep 17 00:00:00 2001
From: Daedalus <16168171+RedDaedalus@users.noreply.github.com>
Date: Wed, 9 Aug 2023 15:15:24 -0600
Subject: [PATCH 6/6] remove `@since`
---
src/main/java/net/dv8tion/jda/api/entities/Activity.java | 2 --
1 file changed, 2 deletions(-)
diff --git a/src/main/java/net/dv8tion/jda/api/entities/Activity.java b/src/main/java/net/dv8tion/jda/api/entities/Activity.java
index a159c8e005..2553d74ea7 100644
--- a/src/main/java/net/dv8tion/jda/api/entities/Activity.java
+++ b/src/main/java/net/dv8tion/jda/api/entities/Activity.java
@@ -237,8 +237,6 @@ static Activity competing(@Nonnull String name)
* If the specified name is null, empty, blank or longer than 128 characters
*
* @return A valid Activity instance with the provided name with {@link net.dv8tion.jda.api.entities.Activity.ActivityType#CUSTOM_STATUS}
- *
- * @since 5.0.0
*/
@Nonnull
static Activity customStatus(@Nonnull String name)