From ea7091efa58f488d19686ad851f79469ad18e886 Mon Sep 17 00:00:00 2001 From: Suraj Kumar Date: Sun, 5 May 2024 11:42:07 +0100 Subject: [PATCH 1/8] 81 implement guild template api --- .../CreateGuildFromTemplateRequest.java | 21 ++++++++++++++++++ .../CreateGuildTemplateRequest.java | 21 ++++++++++++++++++ .../guild_template/DeleteGuildTemplate.java | 14 ++++++++++++ .../DeleteGuildTemplateRequest.java | 22 +++++++++++++++++++ .../GetGuildTemplateRequest.java | 14 ++++++++++++ .../GetGuildTemplatesRequest.java | 12 ++++++++++ .../SyncGuildTemplateRequest.java | 15 +++++++++++++ 7 files changed, 119 insertions(+) create mode 100644 api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/CreateGuildFromTemplateRequest.java create mode 100644 api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/CreateGuildTemplateRequest.java create mode 100644 api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/DeleteGuildTemplate.java create mode 100644 api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/DeleteGuildTemplateRequest.java create mode 100644 api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/GetGuildTemplateRequest.java create mode 100644 api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/GetGuildTemplatesRequest.java create mode 100644 api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/SyncGuildTemplateRequest.java diff --git a/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/CreateGuildFromTemplateRequest.java b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/CreateGuildFromTemplateRequest.java new file mode 100644 index 00000000..d42e64af --- /dev/null +++ b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/CreateGuildFromTemplateRequest.java @@ -0,0 +1,21 @@ +package com.javadiscord.jdi.internal.api.guild_template; + +import com.javadiscord.jdi.internal.api.DiscordRequest; +import com.javadiscord.jdi.internal.api.DiscordRequestBuilder; + +import java.util.Map; + +public record CreateGuildFromTemplateRequest(String templateCode, String name, String icon) + implements DiscordRequest { + + @Override + public DiscordRequestBuilder create() { + return new DiscordRequestBuilder() + .post() + .path("/guilds/templates/%s".formatted(templateCode)) + .body( + Map.of( + "name", name, + "icon", icon)); + } +} diff --git a/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/CreateGuildTemplateRequest.java b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/CreateGuildTemplateRequest.java new file mode 100644 index 00000000..bf66b070 --- /dev/null +++ b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/CreateGuildTemplateRequest.java @@ -0,0 +1,21 @@ +package com.javadiscord.jdi.internal.api.guild_template; + +import com.javadiscord.jdi.internal.api.DiscordRequest; +import com.javadiscord.jdi.internal.api.DiscordRequestBuilder; + +import java.util.Map; + +public record CreateGuildTemplateRequest(long guildId, String name, String description) + implements DiscordRequest { + + @Override + public DiscordRequestBuilder create() { + return new DiscordRequestBuilder() + .post() + .path("/guilds/%s/templates".formatted(guildId)) + .body( + Map.of( + "name", name, + "description", description)); + } +} diff --git a/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/DeleteGuildTemplate.java b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/DeleteGuildTemplate.java new file mode 100644 index 00000000..003202f1 --- /dev/null +++ b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/DeleteGuildTemplate.java @@ -0,0 +1,14 @@ +package com.javadiscord.jdi.internal.api.guild_template; + +import com.javadiscord.jdi.internal.api.DiscordRequest; +import com.javadiscord.jdi.internal.api.DiscordRequestBuilder; + +public record DeleteGuildTemplate(long guildId, String templateCode) implements DiscordRequest { + + @Override + public DiscordRequestBuilder create() { + return new DiscordRequestBuilder() + .delete() + .path("/guilds/%s/templates/%s".formatted(guildId, templateCode)); + } +} diff --git a/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/DeleteGuildTemplateRequest.java b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/DeleteGuildTemplateRequest.java new file mode 100644 index 00000000..951c93b8 --- /dev/null +++ b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/DeleteGuildTemplateRequest.java @@ -0,0 +1,22 @@ +package com.javadiscord.jdi.internal.api.guild_template; + +import com.javadiscord.jdi.internal.api.DiscordRequest; +import com.javadiscord.jdi.internal.api.DiscordRequestBuilder; + +import java.util.Map; + +public record DeleteGuildTemplateRequest( + long guildId, String templateCode, String name, String description) + implements DiscordRequest { + + @Override + public DiscordRequestBuilder create() { + return new DiscordRequestBuilder() + .patch() + .path("/guilds/%s/templates/%s".formatted(guildId, templateCode)) + .body( + Map.of( + "name", name, + "description", description)); + } +} diff --git a/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/GetGuildTemplateRequest.java b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/GetGuildTemplateRequest.java new file mode 100644 index 00000000..e7d85e28 --- /dev/null +++ b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/GetGuildTemplateRequest.java @@ -0,0 +1,14 @@ +package com.javadiscord.jdi.internal.api.guild_template; + +import com.javadiscord.jdi.internal.api.DiscordRequest; +import com.javadiscord.jdi.internal.api.DiscordRequestBuilder; + +public record GetGuildTemplateRequest(String templateCode) implements DiscordRequest { + + @Override + public DiscordRequestBuilder create() { + return new DiscordRequestBuilder() + .get() + .path("/guilds/templates/%s".formatted(templateCode)); + } +} diff --git a/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/GetGuildTemplatesRequest.java b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/GetGuildTemplatesRequest.java new file mode 100644 index 00000000..b2db23bd --- /dev/null +++ b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/GetGuildTemplatesRequest.java @@ -0,0 +1,12 @@ +package com.javadiscord.jdi.internal.api.guild_template; + +import com.javadiscord.jdi.internal.api.DiscordRequest; +import com.javadiscord.jdi.internal.api.DiscordRequestBuilder; + +public record GetGuildTemplatesRequest(long guildId) implements DiscordRequest { + + @Override + public DiscordRequestBuilder create() { + return new DiscordRequestBuilder().get().path("/guilds/%s/templates".formatted(guildId)); + } +} diff --git a/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/SyncGuildTemplateRequest.java b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/SyncGuildTemplateRequest.java new file mode 100644 index 00000000..87195222 --- /dev/null +++ b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/SyncGuildTemplateRequest.java @@ -0,0 +1,15 @@ +package com.javadiscord.jdi.internal.api.guild_template; + +import com.javadiscord.jdi.internal.api.DiscordRequest; +import com.javadiscord.jdi.internal.api.DiscordRequestBuilder; + +public record SyncGuildTemplateRequest(long guildId, String templateCode) + implements DiscordRequest { + + @Override + public DiscordRequestBuilder create() { + return new DiscordRequestBuilder() + .put() + .path("/guilds/%s/templates/%s".formatted(guildId, templateCode)); + } +} From d46a8a4f530b64478f654452fc947c234306b68e Mon Sep 17 00:00:00 2001 From: Ashi Date: Sun, 5 May 2024 18:47:02 +0100 Subject: [PATCH 2/8] Fix for Optional values --- .../CreateGuildFromTemplateRequest.java | 15 ++++++----- .../CreateGuildTemplateRequest.java | 13 ++++++---- .../guild_template/DeleteGuildTemplate.java | 14 ----------- .../DeleteGuildTemplateRequest.java | 13 +++------- .../ModifyGuildTemplateRequest.java | 25 +++++++++++++++++++ 5 files changed, 45 insertions(+), 35 deletions(-) delete mode 100644 api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/DeleteGuildTemplate.java create mode 100644 api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/ModifyGuildTemplateRequest.java diff --git a/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/CreateGuildFromTemplateRequest.java b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/CreateGuildFromTemplateRequest.java index d42e64af..0d00dcc3 100644 --- a/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/CreateGuildFromTemplateRequest.java +++ b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/CreateGuildFromTemplateRequest.java @@ -3,19 +3,22 @@ import com.javadiscord.jdi.internal.api.DiscordRequest; import com.javadiscord.jdi.internal.api.DiscordRequestBuilder; +import java.util.HashMap; import java.util.Map; +import java.util.Optional; -public record CreateGuildFromTemplateRequest(String templateCode, String name, String icon) - implements DiscordRequest { +public record CreateGuildFromTemplateRequest( + String templateCode, String name, Optional icon) implements DiscordRequest { @Override public DiscordRequestBuilder create() { + Map body = new HashMap<>(); + body.put("name", name); + icon.ifPresent(it -> body.put("icon", it)); + return new DiscordRequestBuilder() .post() .path("/guilds/templates/%s".formatted(templateCode)) - .body( - Map.of( - "name", name, - "icon", icon)); + .body(body); } } diff --git a/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/CreateGuildTemplateRequest.java b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/CreateGuildTemplateRequest.java index bf66b070..5da04510 100644 --- a/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/CreateGuildTemplateRequest.java +++ b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/CreateGuildTemplateRequest.java @@ -3,19 +3,22 @@ import com.javadiscord.jdi.internal.api.DiscordRequest; import com.javadiscord.jdi.internal.api.DiscordRequestBuilder; +import java.util.HashMap; import java.util.Map; +import java.util.Optional; -public record CreateGuildTemplateRequest(long guildId, String name, String description) +public record CreateGuildTemplateRequest(long guildId, String name, Optional description) implements DiscordRequest { @Override public DiscordRequestBuilder create() { + Map body = new HashMap<>(); + body.put("name", name); + description.ifPresent(d -> body.put("description", d)); + return new DiscordRequestBuilder() .post() .path("/guilds/%s/templates".formatted(guildId)) - .body( - Map.of( - "name", name, - "description", description)); + .body(body); } } diff --git a/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/DeleteGuildTemplate.java b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/DeleteGuildTemplate.java deleted file mode 100644 index 003202f1..00000000 --- a/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/DeleteGuildTemplate.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.javadiscord.jdi.internal.api.guild_template; - -import com.javadiscord.jdi.internal.api.DiscordRequest; -import com.javadiscord.jdi.internal.api.DiscordRequestBuilder; - -public record DeleteGuildTemplate(long guildId, String templateCode) implements DiscordRequest { - - @Override - public DiscordRequestBuilder create() { - return new DiscordRequestBuilder() - .delete() - .path("/guilds/%s/templates/%s".formatted(guildId, templateCode)); - } -} diff --git a/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/DeleteGuildTemplateRequest.java b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/DeleteGuildTemplateRequest.java index 951c93b8..b2ce5547 100644 --- a/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/DeleteGuildTemplateRequest.java +++ b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/DeleteGuildTemplateRequest.java @@ -3,20 +3,13 @@ import com.javadiscord.jdi.internal.api.DiscordRequest; import com.javadiscord.jdi.internal.api.DiscordRequestBuilder; -import java.util.Map; - -public record DeleteGuildTemplateRequest( - long guildId, String templateCode, String name, String description) +public record DeleteGuildTemplateRequest(long guildId, String templateCode) implements DiscordRequest { @Override public DiscordRequestBuilder create() { return new DiscordRequestBuilder() - .patch() - .path("/guilds/%s/templates/%s".formatted(guildId, templateCode)) - .body( - Map.of( - "name", name, - "description", description)); + .delete() + .path("/guilds/%s/templates/%s".formatted(guildId, templateCode)); } } diff --git a/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/ModifyGuildTemplateRequest.java b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/ModifyGuildTemplateRequest.java new file mode 100644 index 00000000..d2bbece8 --- /dev/null +++ b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_template/ModifyGuildTemplateRequest.java @@ -0,0 +1,25 @@ +package com.javadiscord.jdi.internal.api.guild_template; + +import com.javadiscord.jdi.internal.api.DiscordRequest; +import com.javadiscord.jdi.internal.api.DiscordRequestBuilder; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; + +public record ModifyGuildTemplateRequest( + long guildId, String templateCode, Optional name, Optional description) + implements DiscordRequest { + + @Override + public DiscordRequestBuilder create() { + Map body = new HashMap<>(); + name.ifPresent(n -> body.put("name", n)); + description.ifPresent(desc -> body.put("description", desc)); + + return new DiscordRequestBuilder() + .patch() + .path("/guilds/%s/templates/%s".formatted(guildId, templateCode)) + .body(body); + } +} From 2c31c938d85c4beb70a7659478a13582f56d3291 Mon Sep 17 00:00:00 2001 From: Ashi Date: Sun, 5 May 2024 19:07:05 +0100 Subject: [PATCH 3/8] Removed comment, OffsetDateTime is already in ISO-8601 --- .../jdi/internal/api/guild/ModifyGuildMemberRequest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/api/src/main/java/com/javadiscord/jdi/internal/api/guild/ModifyGuildMemberRequest.java b/api/src/main/java/com/javadiscord/jdi/internal/api/guild/ModifyGuildMemberRequest.java index 6b478317..91a5a730 100644 --- a/api/src/main/java/com/javadiscord/jdi/internal/api/guild/ModifyGuildMemberRequest.java +++ b/api/src/main/java/com/javadiscord/jdi/internal/api/guild/ModifyGuildMemberRequest.java @@ -17,7 +17,6 @@ public record ModifyGuildMemberRequest( Optional mute, Optional deafen, Optional channelId, - // TODO: figure out how to correctly pass a timestamp to discord via the request Optional communicationDisabledUntil, Optional flags) implements DiscordRequest { From b1ce2dcb8d52086cbe91da0fa83af30fdb54d471 Mon Sep 17 00:00:00 2001 From: Ashi Date: Sun, 5 May 2024 19:08:17 +0100 Subject: [PATCH 4/8] Removed comment, object is complete --- .../java/com/javadiscord/jdi/core/models/guild/Integration.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/models/src/main/java/com/javadiscord/jdi/core/models/guild/Integration.java b/models/src/main/java/com/javadiscord/jdi/core/models/guild/Integration.java index 22848baa..8b927464 100644 --- a/models/src/main/java/com/javadiscord/jdi/core/models/guild/Integration.java +++ b/models/src/main/java/com/javadiscord/jdi/core/models/guild/Integration.java @@ -7,8 +7,6 @@ import java.time.OffsetDateTime; -// TODO: finish implementation -// https://discord.com/developers/docs/resources/guild#integration-object @JsonIgnoreProperties(ignoreUnknown = true) public record Integration( @JsonProperty("id") long id, From 588549ba763bc59a1bf43772cf98e4b71e0d3a5e Mon Sep 17 00:00:00 2001 From: Ashi Date: Sun, 5 May 2024 19:10:00 +0100 Subject: [PATCH 5/8] Implement X-Audit-Log-Reason --- .../jdi/internal/api/stage/CreateStageRequest.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/api/src/main/java/com/javadiscord/jdi/internal/api/stage/CreateStageRequest.java b/api/src/main/java/com/javadiscord/jdi/internal/api/stage/CreateStageRequest.java index 8b33dc03..abb12cc7 100644 --- a/api/src/main/java/com/javadiscord/jdi/internal/api/stage/CreateStageRequest.java +++ b/api/src/main/java/com/javadiscord/jdi/internal/api/stage/CreateStageRequest.java @@ -12,12 +12,12 @@ public record CreateStageRequest( String topic, int privacyLevel, Optional sendStartNotification, - Optional guildScheduledEventId) + Optional guildScheduledEventId, + Optional auditLogeReason) implements DiscordRequest { @Override public DiscordRequestBuilder create() { - // TODO: X-Audit-Log-Reason header Map body = new HashMap<>(); body.put("channel_id", channelId); body.put("topic", topic); @@ -25,6 +25,13 @@ public DiscordRequestBuilder create() { sendStartNotification.ifPresent(val -> body.put("send_start_notification", val)); guildScheduledEventId.ifPresent(val -> body.put("guild_scheduled_event_id", val)); - return new DiscordRequestBuilder().post().path("/stage-instances").body(body); + DiscordRequestBuilder builder = new DiscordRequestBuilder(); + builder.post(); + builder.path("/stage-instances"); + builder.body(body); + + auditLogeReason.ifPresent(val -> builder.putHeader("X-Audit-Log-Reason", val)); + + return builder; } } From 978611b92abac74ebdd9f2264f0ceb7b3292f1aa Mon Sep 17 00:00:00 2001 From: Ashi Date: Sun, 5 May 2024 19:10:40 +0100 Subject: [PATCH 6/8] Removed TODO, IllegalArgumentException is sufficient --- .../api/guild_scheduled_event/ModifyScheduledEventRequest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/api/src/main/java/com/javadiscord/jdi/internal/api/guild_scheduled_event/ModifyScheduledEventRequest.java b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_scheduled_event/ModifyScheduledEventRequest.java index c8c9d9a4..f3cc0555 100644 --- a/api/src/main/java/com/javadiscord/jdi/internal/api/guild_scheduled_event/ModifyScheduledEventRequest.java +++ b/api/src/main/java/com/javadiscord/jdi/internal/api/guild_scheduled_event/ModifyScheduledEventRequest.java @@ -31,7 +31,6 @@ public DiscordRequestBuilder create() { // entityMetadata (entity_metadata), scheduledEndTime are all required if (entityType.isPresent() && entityType.get() == 3) { if (entityMetadata.isEmpty() || scheduledEndTime.isEmpty()) { - // TODO: replace with custom exceptions when implemented throw new IllegalArgumentException( "When entityType is EXTERNAL, both entityMetadata and scheduledEndTime must" + " be provided"); From 1ae167a537e0c5037728b9e452045458e696dde3 Mon Sep 17 00:00:00 2001 From: Ashi Date: Sun, 5 May 2024 19:13:52 +0100 Subject: [PATCH 7/8] Implemented TODO comment and created WidgetStyle --- .../internal/api/guild/GetGuildWidgetImageRequest.java | 8 ++++---- .../javadiscord/jdi/core/models/guild/WidgetStyle.java | 9 +++++++++ 2 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 models/src/main/java/com/javadiscord/jdi/core/models/guild/WidgetStyle.java diff --git a/api/src/main/java/com/javadiscord/jdi/internal/api/guild/GetGuildWidgetImageRequest.java b/api/src/main/java/com/javadiscord/jdi/internal/api/guild/GetGuildWidgetImageRequest.java index 8c9dc4da..f2e9b9be 100644 --- a/api/src/main/java/com/javadiscord/jdi/internal/api/guild/GetGuildWidgetImageRequest.java +++ b/api/src/main/java/com/javadiscord/jdi/internal/api/guild/GetGuildWidgetImageRequest.java @@ -1,20 +1,20 @@ package com.javadiscord.jdi.internal.api.guild; +import com.javadiscord.jdi.core.models.guild.WidgetStyle; import com.javadiscord.jdi.internal.api.DiscordRequest; import com.javadiscord.jdi.internal.api.DiscordRequestBuilder; import java.util.Optional; -public record GetGuildWidgetImageRequest(long guildId, Optional style // TODO: - // https://discord.com/developers/docs/resources/guild#get-guild-widget-image-widget-style-options - ) implements DiscordRequest { +public record GetGuildWidgetImageRequest(long guildId, Optional style) + implements DiscordRequest { @Override public DiscordRequestBuilder create() { DiscordRequestBuilder discordRequestBuilder = new DiscordRequestBuilder().get().path("/guilds/%s/widget.png".formatted(guildId)); - style.ifPresent(val -> discordRequestBuilder.queryParam("style", val)); + style.ifPresent(val -> discordRequestBuilder.queryParam("style", val.name().toLowerCase())); return discordRequestBuilder; } diff --git a/models/src/main/java/com/javadiscord/jdi/core/models/guild/WidgetStyle.java b/models/src/main/java/com/javadiscord/jdi/core/models/guild/WidgetStyle.java new file mode 100644 index 00000000..7366a6dc --- /dev/null +++ b/models/src/main/java/com/javadiscord/jdi/core/models/guild/WidgetStyle.java @@ -0,0 +1,9 @@ +package com.javadiscord.jdi.core.models.guild; + +public enum WidgetStyle { + SHIELD, + BANNER1, + BANNER2, + BANNER3, + BANNER4, +} From 8215dd385596bbb75e7880546c8c0d34fe1b4a9e Mon Sep 17 00:00:00 2001 From: Ashi Date: Sun, 5 May 2024 19:20:33 +0100 Subject: [PATCH 8/8] Added Forum Media Thread Message Param object --- ...tartThreadInForumOrMediaChannelRequest.java | 3 ++- .../core/models/guild/AllowedMentionType.java | 7 +++++++ .../jdi/core/models/guild/AllowedMentions.java | 13 +++++++++++++ .../guild/ForumMediaThreadMessageParam.java | 18 ++++++++++++++++++ 4 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 models/src/main/java/com/javadiscord/jdi/core/models/guild/AllowedMentionType.java create mode 100644 models/src/main/java/com/javadiscord/jdi/core/models/guild/AllowedMentions.java create mode 100644 models/src/main/java/com/javadiscord/jdi/core/models/guild/ForumMediaThreadMessageParam.java diff --git a/api/src/main/java/com/javadiscord/jdi/internal/api/channel/StartThreadInForumOrMediaChannelRequest.java b/api/src/main/java/com/javadiscord/jdi/internal/api/channel/StartThreadInForumOrMediaChannelRequest.java index c3af4e58..d6e3f279 100644 --- a/api/src/main/java/com/javadiscord/jdi/internal/api/channel/StartThreadInForumOrMediaChannelRequest.java +++ b/api/src/main/java/com/javadiscord/jdi/internal/api/channel/StartThreadInForumOrMediaChannelRequest.java @@ -1,5 +1,6 @@ package com.javadiscord.jdi.internal.api.channel; +import com.javadiscord.jdi.core.models.guild.ForumMediaThreadMessageParam; import com.javadiscord.jdi.internal.api.DiscordRequest; import com.javadiscord.jdi.internal.api.DiscordRequestBuilder; @@ -13,7 +14,7 @@ public record StartThreadInForumOrMediaChannelRequest( String name, Optional autoArchiveDuration, Optional rateLimitPerUser, - Object message, // TODO: Create Forum and Media Thread Message Params Object + ForumMediaThreadMessageParam message, Optional> appliedTags, Optional files, // TODO: Create Files object Optional payloadJson) diff --git a/models/src/main/java/com/javadiscord/jdi/core/models/guild/AllowedMentionType.java b/models/src/main/java/com/javadiscord/jdi/core/models/guild/AllowedMentionType.java new file mode 100644 index 00000000..d5bea523 --- /dev/null +++ b/models/src/main/java/com/javadiscord/jdi/core/models/guild/AllowedMentionType.java @@ -0,0 +1,7 @@ +package com.javadiscord.jdi.core.models.guild; + +public enum AllowedMentionType { + ROLES, + USERS, + EVERYONE +} diff --git a/models/src/main/java/com/javadiscord/jdi/core/models/guild/AllowedMentions.java b/models/src/main/java/com/javadiscord/jdi/core/models/guild/AllowedMentions.java new file mode 100644 index 00000000..965aa2c3 --- /dev/null +++ b/models/src/main/java/com/javadiscord/jdi/core/models/guild/AllowedMentions.java @@ -0,0 +1,13 @@ +package com.javadiscord.jdi.core.models.guild; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.List; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record AllowedMentions( + @JsonProperty("parse") List mentionTypes, + @JsonProperty("roles") List roles, + @JsonProperty("users") List users, + @JsonProperty("replied_user") boolean repliedUser) {} diff --git a/models/src/main/java/com/javadiscord/jdi/core/models/guild/ForumMediaThreadMessageParam.java b/models/src/main/java/com/javadiscord/jdi/core/models/guild/ForumMediaThreadMessageParam.java new file mode 100644 index 00000000..2a43c2c2 --- /dev/null +++ b/models/src/main/java/com/javadiscord/jdi/core/models/guild/ForumMediaThreadMessageParam.java @@ -0,0 +1,18 @@ +package com.javadiscord.jdi.core.models.guild; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.javadiscord.jdi.core.models.message.MessageAttachment; +import com.javadiscord.jdi.core.models.message.embed.Embed; + +import java.util.List; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record ForumMediaThreadMessageParam( + @JsonProperty("content") String content, + @JsonProperty("embeds") List embeds, + @JsonProperty("allowed_mentions") List allowedMentions, + @JsonProperty("components") List components, + @JsonProperty("sticker_ids") List stickerIds, + @JsonProperty("attachments") List attachments, + @JsonProperty("flags") int flags) {}