From 1d8cf6c2d4749c744fd0c8ab430f3cb719348fe8 Mon Sep 17 00:00:00 2001 From: zoli Date: Wed, 23 Oct 2024 09:44:42 +0200 Subject: [PATCH] second --- .../config/DiscordBotConfig.java | 22 ++++++++-- .../config/DiscordBotConstants.java | 9 ++++ .../eventListener/DiscordCommandService.java | 24 +++++++++++ .../eventListener/DiscordEventListener.java | 43 ------------------- 4 files changed, 52 insertions(+), 46 deletions(-) create mode 100644 src/main/java/zoltan/vari/spotify_mixer_discord_bot/config/DiscordBotConstants.java create mode 100644 src/main/java/zoltan/vari/spotify_mixer_discord_bot/eventListener/DiscordCommandService.java delete mode 100644 src/main/java/zoltan/vari/spotify_mixer_discord_bot/eventListener/DiscordEventListener.java diff --git a/src/main/java/zoltan/vari/spotify_mixer_discord_bot/config/DiscordBotConfig.java b/src/main/java/zoltan/vari/spotify_mixer_discord_bot/config/DiscordBotConfig.java index 5b9d7b5..a2c0293 100644 --- a/src/main/java/zoltan/vari/spotify_mixer_discord_bot/config/DiscordBotConfig.java +++ b/src/main/java/zoltan/vari/spotify_mixer_discord_bot/config/DiscordBotConfig.java @@ -2,9 +2,12 @@ package zoltan.vari.spotify_mixer_discord_bot.config; import discord4j.core.DiscordClient; import discord4j.core.GatewayDiscordClient; +import discord4j.core.event.domain.interaction.ApplicationCommandInteractionEvent; +import discord4j.discordjson.json.ApplicationCommandRequest; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import zoltan.vari.spotify_mixer_discord_bot.eventListener.DiscordCommandService; @Configuration public class DiscordBotConfig { @@ -12,15 +15,28 @@ public class DiscordBotConfig { @Value( "${discord.bot.token}" ) private String token; - @Bean public DiscordClient discordClient(){ return DiscordClient.create(token); } @Bean - public GatewayDiscordClient gatewayDiscordClient(DiscordClient discordClient){ - return discordClient.login().block(); + public GatewayDiscordClient gatewayDiscordClient(DiscordClient client, DiscordCommandService discordCommandService){ + GatewayDiscordClient gw = client.login().block(); + ApplicationCommandRequest greetCmdRequest = ApplicationCommandRequest.builder() + .name(DiscordBotConstants.CREATE_SESSION_COMMAND) + .description(DiscordBotConstants.CREATE_SESSION_DESCRIPTION) + .build(); + client.getApplicationService() + .createGlobalApplicationCommand(client.getApplicationId().block(), greetCmdRequest) + .subscribe(); + + + gw.on(ApplicationCommandInteractionEvent.class, event -> { + return discordCommandService.processCommand(gw,client,event); + }).subscribe(); + + return gw; } } diff --git a/src/main/java/zoltan/vari/spotify_mixer_discord_bot/config/DiscordBotConstants.java b/src/main/java/zoltan/vari/spotify_mixer_discord_bot/config/DiscordBotConstants.java new file mode 100644 index 0000000..2ccb991 --- /dev/null +++ b/src/main/java/zoltan/vari/spotify_mixer_discord_bot/config/DiscordBotConstants.java @@ -0,0 +1,9 @@ +package zoltan.vari.spotify_mixer_discord_bot.config; + +public class DiscordBotConstants { + + public static final String CREATE_SESSION_COMMAND = "createSession"; + public static final String CREATE_SESSION_DESCRIPTION = "Creates a spotify mixer session, sends you a link to join the session. It will ask you to first authorize the app to use your spotify data."; + + +} diff --git a/src/main/java/zoltan/vari/spotify_mixer_discord_bot/eventListener/DiscordCommandService.java b/src/main/java/zoltan/vari/spotify_mixer_discord_bot/eventListener/DiscordCommandService.java new file mode 100644 index 0000000..62e7f50 --- /dev/null +++ b/src/main/java/zoltan/vari/spotify_mixer_discord_bot/eventListener/DiscordCommandService.java @@ -0,0 +1,24 @@ +package zoltan.vari.spotify_mixer_discord_bot.eventListener; + +import discord4j.common.util.Snowflake; +import discord4j.core.DiscordClient; +import discord4j.core.GatewayDiscordClient; +import discord4j.core.event.domain.interaction.ApplicationCommandInteractionEvent; +import discord4j.core.object.entity.Member; +import discord4j.core.object.entity.channel.PrivateChannel; +import discord4j.core.spec.InteractionApplicationCommandCallbackReplyMono; +import org.springframework.stereotype.Service; + +@Service +public class DiscordCommandService { + + public InteractionApplicationCommandCallbackReplyMono processCommand(GatewayDiscordClient gw, DiscordClient client, ApplicationCommandInteractionEvent event){ + + PrivateChannel userChannel = event.getInteraction().getUser().getPrivateChannel().block(); + + client.getChannelById(userChannel.getId()).createMessage("test").block(); + return event.reply(event.toString()); + } + + +} diff --git a/src/main/java/zoltan/vari/spotify_mixer_discord_bot/eventListener/DiscordEventListener.java b/src/main/java/zoltan/vari/spotify_mixer_discord_bot/eventListener/DiscordEventListener.java deleted file mode 100644 index 60586ec..0000000 --- a/src/main/java/zoltan/vari/spotify_mixer_discord_bot/eventListener/DiscordEventListener.java +++ /dev/null @@ -1,43 +0,0 @@ -package zoltan.vari.spotify_mixer_discord_bot.eventListener; - -import discord4j.core.DiscordClient; -import discord4j.core.GatewayDiscordClient; -import discord4j.core.event.domain.interaction.ApplicationCommandInteractionEvent; -import discord4j.core.event.domain.message.MessageCreateEvent; -import discord4j.core.object.command.ApplicationCommandOption; -import discord4j.core.object.entity.Message; -import discord4j.discordjson.json.ApplicationCommandOptionData; -import discord4j.discordjson.json.ApplicationCommandRequest; -import jakarta.annotation.PostConstruct; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -@Service -public class DiscordEventListener { - - @Autowired - private GatewayDiscordClient gw; - - @Autowired - private DiscordClient client; - - @PostConstruct - public void init(){ - ApplicationCommandRequest greetCmdRequest = ApplicationCommandRequest.builder() - .name("create") - .description("creates a new spotify mixer room") - .build(); - client.getApplicationService() - .createGlobalApplicationCommand(client.getApplicationId().block(), greetCmdRequest) - .subscribe(); - - gw.on(ApplicationCommandInteractionEvent.class, event -> { - if (event.getCommandName().equals("greet")) { - return event.reply("Pong!"); - } - return event.reply("default"); - }).subscribe(); - } - - -}