From c9d57e8e08c90cfbcdcb8933fc08a8ab92a2bb4a Mon Sep 17 00:00:00 2001 From: MrMaleficus Date: Sat, 7 Dec 2024 11:36:54 +0100 Subject: [PATCH 1/7] DiscordInviteCreateScriptEvent --- .../ddiscordbot/DenizenDiscordBot.java | 1 + .../ddiscordbot/DiscordConnection.java | 6 ++ .../DiscordInviteCreateScriptEvent.java | 72 +++++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java diff --git a/src/main/java/com/denizenscript/ddiscordbot/DenizenDiscordBot.java b/src/main/java/com/denizenscript/ddiscordbot/DenizenDiscordBot.java index 54f8cd3..8b8eb7d 100644 --- a/src/main/java/com/denizenscript/ddiscordbot/DenizenDiscordBot.java +++ b/src/main/java/com/denizenscript/ddiscordbot/DenizenDiscordBot.java @@ -81,6 +81,7 @@ public void onEnable() { ScriptEvent.registerScriptEvent(DiscordUserLeavesScriptEvent.class); ScriptEvent.registerScriptEvent(DiscordUserNicknameChangeScriptEvent.class); ScriptEvent.registerScriptEvent(DiscordUserRoleChangeScriptEvent.class); + ScriptEvent.registerScriptEvent(DiscordInviteCreateScriptEvent.class); // Objects ObjectFetcher.registerWithObjectFetcher(DiscordBotTag.class, DiscordBotTag.tagProcessor); ObjectFetcher.registerWithObjectFetcher(DiscordButtonTag.class, DiscordButtonTag.tagProcessor); diff --git a/src/main/java/com/denizenscript/ddiscordbot/DiscordConnection.java b/src/main/java/com/denizenscript/ddiscordbot/DiscordConnection.java index 9c9b034..ab970cf 100644 --- a/src/main/java/com/denizenscript/ddiscordbot/DiscordConnection.java +++ b/src/main/java/com/denizenscript/ddiscordbot/DiscordConnection.java @@ -9,6 +9,7 @@ import net.dv8tion.jda.api.events.Event; import net.dv8tion.jda.api.events.channel.ChannelCreateEvent; import net.dv8tion.jda.api.events.channel.ChannelDeleteEvent; +import net.dv8tion.jda.api.events.guild.invite.GuildInviteCreateEvent; import net.dv8tion.jda.api.events.guild.member.GuildMemberJoinEvent; import net.dv8tion.jda.api.events.guild.member.GuildMemberRemoveEvent; import net.dv8tion.jda.api.events.guild.member.GuildMemberRoleAddEvent; @@ -165,6 +166,11 @@ public void onGenericSelectMenuInteraction(GenericSelectMenuInteractionEvent eve autoHandle(event, DiscordSelectionUsedScriptEvent.instance); } + @Override + public void onGuildInviteCreate(GuildInviteCreateEvent event) { + autoHandle(event, DiscordInviteCreateScriptEvent.instance); + } + @Override public void onChannelCreate(@Nonnull ChannelCreateEvent event) { autoHandle(event, DiscordChannelCreateScriptEvent.instance); diff --git a/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java b/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java new file mode 100644 index 0000000..fecda8c --- /dev/null +++ b/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java @@ -0,0 +1,72 @@ +package com.denizenscript.ddiscordbot.events; + +import com.denizenscript.ddiscordbot.DiscordScriptEvent; +import com.denizenscript.ddiscordbot.objects.DiscordChannelTag; +import com.denizenscript.ddiscordbot.objects.DiscordGroupTag; +import com.denizenscript.ddiscordbot.objects.DiscordUserTag; +import com.denizenscript.denizencore.objects.ObjectTag; +import com.denizenscript.denizencore.objects.core.ElementTag; +import net.dv8tion.jda.api.events.guild.invite.GuildInviteCreateEvent; +import net.dv8tion.jda.api.events.guild.member.GuildMemberJoinEvent; + +public class DiscordInviteCreateScriptEvent extends DiscordScriptEvent { + + // <--[event] + // @Events + // discord invitation created + // + // @Switch for: to only process the event for a specified Discord bot. + // @Switch group: to only process the event for a specified Discord group. + // + // @Triggers when a Discord user creates an invitation. + // + // @Plugin dDiscordBot + // + // @Group Discord + // + // @Context + // returns the relevant DiscordBotTag. + // returns the DiscordGroupTag. + // returns the DiscordChannelTag. + // returns the DiscordUserTag of the invitation creator. + // returns the ElementTag of the invitation code (after the "/" in the URL. + // returns the ElementTag of the invitation URL + // --> + + public static DiscordInviteCreateScriptEvent instance; + + public DiscordInviteCreateScriptEvent() { + instance = this; + registerCouldMatcher("discord invitation created"); + registerSwitches("channel", "group"); + } + + public GuildInviteCreateEvent getEvent() { + return (GuildInviteCreateEvent) event; + } + + @Override + public boolean matches(ScriptPath path) { + if (!tryGuild(path, getEvent().getGuild())) { + return false; + } + return super.matches(path); + } + + @Override + public ObjectTag getContext(String name) { + switch (name) { + case "channel": + return new DiscordChannelTag(botID, getEvent().getChannel()); + case "group": + return new DiscordGroupTag(botID, getEvent().getGuild()); + case "user": + return new DiscordUserTag(botID, getEvent().getInvite().getInviter()); + case "code": + return new ElementTag(getEvent().getInvite().getCode()); + case "url": + return new ElementTag(getEvent().getInvite().getUrl()); + } + return super.getContext(name); + } +} From 59ac4b2bce3a2aca49019e5ec7c412cba0d7f7a8 Mon Sep 17 00:00:00 2001 From: MrMaleficus Date: Sat, 7 Dec 2024 11:40:05 +0100 Subject: [PATCH 2/7] Update DiscordInviteCreateScriptEvent.java --- .../ddiscordbot/events/DiscordInviteCreateScriptEvent.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java b/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java index fecda8c..9c7c225 100644 --- a/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java +++ b/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java @@ -70,3 +70,4 @@ public ObjectTag getContext(String name) { return super.getContext(name); } } + From 12c58c6ad26bd1d376e5ecc645ae06bcf59ea9ed Mon Sep 17 00:00:00 2001 From: MrMaleficus Date: Sat, 7 Dec 2024 11:41:49 +0100 Subject: [PATCH 3/7] unused imports --- .../ddiscordbot/events/DiscordInviteCreateScriptEvent.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java b/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java index 9c7c225..6b7a298 100644 --- a/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java +++ b/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java @@ -7,7 +7,6 @@ import com.denizenscript.denizencore.objects.ObjectTag; import com.denizenscript.denizencore.objects.core.ElementTag; import net.dv8tion.jda.api.events.guild.invite.GuildInviteCreateEvent; -import net.dv8tion.jda.api.events.guild.member.GuildMemberJoinEvent; public class DiscordInviteCreateScriptEvent extends DiscordScriptEvent { From b64107d49f2ecd3e1fbfc804e89807eeb0d66c03 Mon Sep 17 00:00:00 2001 From: MrMaleficus Date: Sat, 7 Dec 2024 11:49:45 +0100 Subject: [PATCH 4/7] channel switch not listened --- .../ddiscordbot/events/DiscordInviteCreateScriptEvent.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java b/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java index 6b7a298..69099fd 100644 --- a/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java +++ b/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java @@ -46,6 +46,9 @@ public GuildInviteCreateEvent getEvent() { @Override public boolean matches(ScriptPath path) { + if (!tryChannel(path, getEvent().getChannel())) { + return false; + } if (!tryGuild(path, getEvent().getGuild())) { return false; } From f6c86b835b055f1ca8e37955c612f5227eeeabc4 Mon Sep 17 00:00:00 2001 From: MrMaleficus Date: Sun, 8 Dec 2024 07:33:05 +0100 Subject: [PATCH 5/7] fixes from review --- .../ddiscordbot/DenizenDiscordBot.java | 2 +- .../DiscordInviteCreateScriptEvent.java | 26 ++++++++----------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/denizenscript/ddiscordbot/DenizenDiscordBot.java b/src/main/java/com/denizenscript/ddiscordbot/DenizenDiscordBot.java index 8b8eb7d..bd68e78 100644 --- a/src/main/java/com/denizenscript/ddiscordbot/DenizenDiscordBot.java +++ b/src/main/java/com/denizenscript/ddiscordbot/DenizenDiscordBot.java @@ -68,6 +68,7 @@ public void onEnable() { ScriptEvent.registerScriptEvent(DiscordChannelCreateScriptEvent.class); ScriptEvent.registerScriptEvent(DiscordChannelDeleteScriptEvent.class); ScriptEvent.registerScriptEvent(DiscordCommandAutocompleteScriptEvent.class); + ScriptEvent.registerScriptEvent(DiscordInviteCreateScriptEvent.class); ScriptEvent.registerScriptEvent(DiscordMessageDeletedScriptEvent.class); ScriptEvent.registerScriptEvent(DiscordMessageModifiedScriptEvent.class); ScriptEvent.registerScriptEvent(DiscordMessageReactionAddScriptEvent.class); @@ -81,7 +82,6 @@ public void onEnable() { ScriptEvent.registerScriptEvent(DiscordUserLeavesScriptEvent.class); ScriptEvent.registerScriptEvent(DiscordUserNicknameChangeScriptEvent.class); ScriptEvent.registerScriptEvent(DiscordUserRoleChangeScriptEvent.class); - ScriptEvent.registerScriptEvent(DiscordInviteCreateScriptEvent.class); // Objects ObjectFetcher.registerWithObjectFetcher(DiscordBotTag.class, DiscordBotTag.tagProcessor); ObjectFetcher.registerWithObjectFetcher(DiscordButtonTag.class, DiscordButtonTag.tagProcessor); diff --git a/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java b/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java index 69099fd..5830af3 100644 --- a/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java +++ b/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java @@ -15,6 +15,7 @@ public class DiscordInviteCreateScriptEvent extends DiscordScriptEvent { // discord invitation created // // @Switch for: to only process the event for a specified Discord bot. + // @Switch channel: to only process the event for a specified Discord channel. // @Switch group: to only process the event for a specified Discord group. // // @Triggers when a Discord user creates an invitation. @@ -28,8 +29,8 @@ public class DiscordInviteCreateScriptEvent extends DiscordScriptEvent { // returns the DiscordGroupTag. // returns the DiscordChannelTag. // returns the DiscordUserTag of the invitation creator. - // returns the ElementTag of the invitation code (after the "/" in the URL. - // returns the ElementTag of the invitation URL + // returns the invitation code (after the latest "/" in the URL). + // returns the invitation URL. // --> public static DiscordInviteCreateScriptEvent instance; @@ -57,19 +58,14 @@ public boolean matches(ScriptPath path) { @Override public ObjectTag getContext(String name) { - switch (name) { - case "channel": - return new DiscordChannelTag(botID, getEvent().getChannel()); - case "group": - return new DiscordGroupTag(botID, getEvent().getGuild()); - case "user": - return new DiscordUserTag(botID, getEvent().getInvite().getInviter()); - case "code": - return new ElementTag(getEvent().getInvite().getCode()); - case "url": - return new ElementTag(getEvent().getInvite().getUrl()); - } - return super.getContext(name); + return switch (name) { + case "channel" -> new DiscordChannelTag(botID, getEvent().getChannel()); + case "group" -> new DiscordGroupTag(botID, getEvent().getGuild()); + case "user" -> new DiscordUserTag(botID, getEvent().getInvite().getInviter()); + case "code" -> new ElementTag(getEvent().getInvite().getCode(), true); + case "url" -> new ElementTag(getEvent().getInvite().getUrl(), true); + default -> super.getContext(name); + }; } } From 5343955f41bced44536c1c1f8ed90695ae93bea2 Mon Sep 17 00:00:00 2001 From: MrMaleficus Date: Sun, 8 Dec 2024 07:42:31 +0100 Subject: [PATCH 6/7] Update DiscordInviteCreateScriptEvent.java --- .../ddiscordbot/events/DiscordInviteCreateScriptEvent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java b/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java index 5830af3..c793ccf 100644 --- a/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java +++ b/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java @@ -29,7 +29,7 @@ public class DiscordInviteCreateScriptEvent extends DiscordScriptEvent { // returns the DiscordGroupTag. // returns the DiscordChannelTag. // returns the DiscordUserTag of the invitation creator. - // returns the invitation code (after the latest "/" in the URL). + // returns the invitation code (after the last "/" in the URL). // returns the invitation URL. // --> From c7a0bcdd5071832faf70b479518abd8767bb8b62 Mon Sep 17 00:00:00 2001 From: Maxime Moisant Date: Sun, 29 Dec 2024 14:55:47 +0100 Subject: [PATCH 7/7] Update DiscordInviteCreateScriptEvent.java --- .../ddiscordbot/events/DiscordInviteCreateScriptEvent.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java b/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java index c793ccf..32461fc 100644 --- a/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java +++ b/src/main/java/com/denizenscript/ddiscordbot/events/DiscordInviteCreateScriptEvent.java @@ -26,8 +26,8 @@ public class DiscordInviteCreateScriptEvent extends DiscordScriptEvent { // // @Context // returns the relevant DiscordBotTag. - // returns the DiscordGroupTag. - // returns the DiscordChannelTag. + // returns the DiscordGroupTag of the created invitation. + // returns the DiscordChannelTag of the created invitation. // returns the DiscordUserTag of the invitation creator. // returns the invitation code (after the last "/" in the URL). // returns the invitation URL.