sxcybot

OSRS oriented Discord Bot
git clone git://git.wimdupont.com/sxcybot.git
Log | Files | Refs | README | LICENSE

commit e678f21c80cc050a282e78907d150fb0b803f38f
parent d2815705322e4bf5f0d55eb4ee7dbba3d7783ac0
Author: Wim Dupont <wim@wimdupont.com>
Date:   Sat,  3 Aug 2024 07:39:30 +0200

jda5 upgrade

Diffstat:
Mpom.xml | 25+------------------------
Msrc/main/java/com/wimdupont/sxcybot/SxcyBotApplication.java | 12++++--------
Msrc/main/java/com/wimdupont/sxcybot/client/ClientErrorHandler.java | 2+-
Msrc/main/java/com/wimdupont/sxcybot/client/GrandExchangeClient.java | 2+-
Msrc/main/java/com/wimdupont/sxcybot/client/HiScoreClient.java | 2+-
Msrc/main/java/com/wimdupont/sxcybot/listeners/AdminCommandListener.java | 2+-
Msrc/main/java/com/wimdupont/sxcybot/listeners/ChatListener.java | 2+-
Msrc/main/java/com/wimdupont/sxcybot/listeners/CommandListener.java | 3+--
Asrc/main/java/com/wimdupont/sxcybot/listeners/EventWaiter.java | 41+++++++++++++++++++++++++++++++++++++++++
Dsrc/main/java/com/wimdupont/sxcybot/listeners/EventWaiterUtil.java | 36------------------------------------
Msrc/main/java/com/wimdupont/sxcybot/listeners/GuildMemberEventListener.java | 4++--
Asrc/main/java/com/wimdupont/sxcybot/listeners/MessageResponseWaiter.java | 52++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/main/java/com/wimdupont/sxcybot/listeners/PollReactionListener.java | 8++++----
Msrc/main/java/com/wimdupont/sxcybot/listeners/PrivateListener.java | 3+--
Dsrc/main/java/com/wimdupont/sxcybot/listeners/TimeOutRunner.java | 28----------------------------
Msrc/main/java/com/wimdupont/sxcybot/listeners/admin/BanlistListener.java | 2+-
Msrc/main/java/com/wimdupont/sxcybot/listeners/admin/BossUpdateMultiplierListener.java | 18+++++++++---------
Msrc/main/java/com/wimdupont/sxcybot/listeners/admin/EditBanlistListener.java | 2+-
Msrc/main/java/com/wimdupont/sxcybot/listeners/admin/EditPvmListener.java | 2+-
Msrc/main/java/com/wimdupont/sxcybot/listeners/admin/EditRoleListener.java | 6+-----
Msrc/main/java/com/wimdupont/sxcybot/listeners/admin/EditRuleListener.java | 2+-
Msrc/main/java/com/wimdupont/sxcybot/listeners/admin/RoleAssignListener.java | 14+++++++-------
Msrc/main/java/com/wimdupont/sxcybot/listeners/admin/banlist/AddBanlistUserListener.java | 19+++++++++----------
Msrc/main/java/com/wimdupont/sxcybot/listeners/admin/banlist/DeleteBanlistUserListener.java | 17++++++++---------
Msrc/main/java/com/wimdupont/sxcybot/listeners/admin/banlist/UpdateBanlistUserListener.java | 19+++++++++----------
Msrc/main/java/com/wimdupont/sxcybot/listeners/admin/pvmrole/AddPvmListener.java | 17++++++++---------
Msrc/main/java/com/wimdupont/sxcybot/listeners/admin/pvmrole/DeletePvmListener.java | 19+++++++++----------
Msrc/main/java/com/wimdupont/sxcybot/listeners/admin/pvmrole/UpdatePvmListener.java | 21++++++++++-----------
Msrc/main/java/com/wimdupont/sxcybot/listeners/admin/role/AddRoleListener.java | 19+++++++++----------
Msrc/main/java/com/wimdupont/sxcybot/listeners/admin/role/DeleteRoleListener.java | 19+++++++++----------
Msrc/main/java/com/wimdupont/sxcybot/listeners/admin/role/UpdateRoleListener.java | 21++++++++++-----------
Msrc/main/java/com/wimdupont/sxcybot/listeners/admin/rule/AddRuleListener.java | 15+++++++--------
Msrc/main/java/com/wimdupont/sxcybot/listeners/admin/rule/DeleteRuleListener.java | 17++++++++---------
Msrc/main/java/com/wimdupont/sxcybot/listeners/admin/rule/UpdateRuleListener.java | 19+++++++++----------
Msrc/main/java/com/wimdupont/sxcybot/listeners/member/BB8Listener.java | 19+++++++++++++------
Msrc/main/java/com/wimdupont/sxcybot/listeners/member/CustomPollListener.java | 2+-
Msrc/main/java/com/wimdupont/sxcybot/listeners/member/EventListener.java | 27+++++++++++++--------------
Msrc/main/java/com/wimdupont/sxcybot/listeners/member/ForumListener.java | 2+-
Msrc/main/java/com/wimdupont/sxcybot/listeners/member/PingListener.java | 2+-
Msrc/main/java/com/wimdupont/sxcybot/listeners/member/PollListener.java | 7++++---
Msrc/main/java/com/wimdupont/sxcybot/listeners/member/PvmRoleCheckListener.java | 2+-
Msrc/main/java/com/wimdupont/sxcybot/listeners/member/PvmRolePollListener.java | 2+-
Msrc/main/java/com/wimdupont/sxcybot/listeners/member/RuleListener.java | 2+-
Msrc/main/java/com/wimdupont/sxcybot/model/EditListenerDto.java | 2+-
Msrc/main/java/com/wimdupont/sxcybot/services/OsrsMonitoringService.java | 2+-
Msrc/main/java/com/wimdupont/sxcybot/services/PvMRoleResolver.java | 4++--
Msrc/main/java/com/wimdupont/sxcybot/services/guild/ChatModService.java | 4++--
Msrc/main/java/com/wimdupont/sxcybot/services/guild/pvmrole/PvmRoleAssignerService.java | 2+-
Msrc/main/java/com/wimdupont/sxcybot/services/guild/pvmrole/PvmRoleSnapshotComparatorService.java | 4++--
Msrc/main/java/com/wimdupont/sxcybot/util/CustomPollFiller.java | 20++++++++++----------
Msrc/main/java/com/wimdupont/sxcybot/util/DiscordMemberFinderUtil.java | 14+++++++-------
Msrc/main/java/com/wimdupont/sxcybot/util/EditListenerUtil.java | 10+++++-----
Msrc/test/java/com/wimdupont/sxcybot/client/GrandExchangeClientTest.java | 2+-
Msrc/test/java/com/wimdupont/sxcybot/client/HiScoreClientTest.java | 10+++++-----
54 files changed, 310 insertions(+), 319 deletions(-)

diff --git a/pom.xml b/pom.xml @@ -16,8 +16,7 @@ <properties> <java.version>21</java.version> - <jda-utilities-commons.version>3.0.5</jda-utilities-commons.version> - <dv8ation.jda.version>4.4.0_350</dv8ation.jda.version> + <dv8ation.jda.version>5.0.1</dv8ation.jda.version> </properties> <dependencies> @@ -43,11 +42,6 @@ <artifactId>jakarta.mail</artifactId> </dependency> <dependency> - <groupId>com.jagrosh</groupId> - <artifactId>jda-utilities-commons</artifactId> - <version>${jda-utilities-commons.version}</version> - </dependency> - <dependency> <groupId>net.dv8tion</groupId> <artifactId>JDA</artifactId> <version>${dv8ation.jda.version}</version> @@ -78,23 +72,6 @@ </plugin> </plugins> </build> - <repositories> - <repository> - <id>central</id> - <name>bintray</name> - <url>https://jcenter.bintray.com</url> - </repository> - <repository> - <id>dv8tion</id> - <name>m2-dv8tion</name> - <url>https://m2.dv8tion.net/releases</url> - </repository> - <repository> - <id>maven_central</id> - <name>Maven Central</name> - <url>https://repo.maven.apache.org/maven2/</url> - </repository> - </repositories> <profiles> <profile> <id>dev</id> diff --git a/src/main/java/com/wimdupont/sxcybot/SxcyBotApplication.java b/src/main/java/com/wimdupont/sxcybot/SxcyBotApplication.java @@ -2,7 +2,6 @@ package com.wimdupont.sxcybot; import com.wimdupont.sxcybot.enums.Command; import com.wimdupont.sxcybot.listeners.ChatListener; -import com.wimdupont.sxcybot.listeners.EventWaiterUtil; import com.wimdupont.sxcybot.listeners.GuildMemberEventListener; import com.wimdupont.sxcybot.listeners.PollReactionListener; import com.wimdupont.sxcybot.services.PvMRoleResolver; @@ -22,7 +21,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; -import javax.security.auth.login.LoginException; import java.util.Arrays; @SpringBootApplication @@ -32,7 +30,6 @@ public class SxcyBotApplication implements CommandLineRunner { private static final Logger LOGGER = LoggerFactory.getLogger(SxcyBotApplication.class); private final ChatListener chatListener; - private final EventWaiterUtil eventWaiterUtil; private final PollReactionListener pollReactionListener; private final GuildMemberEventListener guildMemberEventListener; private final ReleaseNotesUtil releaseNotesUtil; @@ -41,7 +38,6 @@ public class SxcyBotApplication implements CommandLineRunner { private final String token; public SxcyBotApplication(ChatListener chatListener, - EventWaiterUtil eventWaiterUtil, PollReactionListener pollReactionListener, GuildMemberEventListener guildMemberEventListener, ReleaseNotesUtil releaseNotesUtil, @@ -49,7 +45,6 @@ public class SxcyBotApplication implements CommandLineRunner { PvMRoleResolver pvMRoleResolver, @Value("${discord.bot.token}") String token) { this.chatListener = chatListener; - this.eventWaiterUtil = eventWaiterUtil; this.pollReactionListener = pollReactionListener; this.guildMemberEventListener = guildMemberEventListener; this.releaseNotesUtil = releaseNotesUtil; @@ -63,16 +58,17 @@ public class SxcyBotApplication implements CommandLineRunner { } @Override - public void run(String[] args) throws LoginException { + public void run(String[] args) { LOGGER.debug("Jda to be created"); JDA jda = JDABuilder.createLight(token, + GatewayIntent.MESSAGE_CONTENT, GatewayIntent.GUILD_MESSAGES, GatewayIntent.DIRECT_MESSAGES, GatewayIntent.GUILD_MESSAGE_REACTIONS, GatewayIntent.GUILD_MEMBERS, - GatewayIntent.GUILD_BANS + GatewayIntent.GUILD_MODERATION ) - .addEventListeners(chatListener, eventWaiterUtil, guildMemberEventListener, pollReactionListener) + .addEventListeners(chatListener, guildMemberEventListener, pollReactionListener) .setActivity(Activity.listening(Commands.COMMAND_PREFIX + Command.HELP.name().toLowerCase())) .build(); try { diff --git a/src/main/java/com/wimdupont/sxcybot/client/ClientErrorHandler.java b/src/main/java/com/wimdupont/sxcybot/client/ClientErrorHandler.java @@ -1,6 +1,6 @@ package com.wimdupont.sxcybot.client; -import net.dv8tion.jda.api.entities.MessageChannel; +import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; import org.springframework.http.client.ClientHttpResponse; import org.springframework.web.client.DefaultResponseErrorHandler; diff --git a/src/main/java/com/wimdupont/sxcybot/client/GrandExchangeClient.java b/src/main/java/com/wimdupont/sxcybot/client/GrandExchangeClient.java @@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.wimdupont.sxcybot.exceptions.EntityNotFoundException; import com.wimdupont.sxcybot.model.OsrsItem; import com.wimdupont.sxcybot.util.NumberFormatter; -import net.dv8tion.jda.api.entities.MessageChannel; +import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; diff --git a/src/main/java/com/wimdupont/sxcybot/client/HiScoreClient.java b/src/main/java/com/wimdupont/sxcybot/client/HiScoreClient.java @@ -10,7 +10,7 @@ import com.wimdupont.sxcybot.repository.osrs.dao.OsrsHiscoreStat; import com.wimdupont.sxcybot.services.osrs.OsrsHiscoreBossService; import com.wimdupont.sxcybot.services.osrs.OsrsHiscoreStatService; import com.wimdupont.sxcybot.util.NumberFormatter; -import net.dv8tion.jda.api.entities.MessageChannel; +import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.web.client.RestTemplateBuilder; diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/AdminCommandListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/AdminCommandListener.java @@ -11,13 +11,13 @@ import com.wimdupont.sxcybot.listeners.admin.EditRuleListener; import com.wimdupont.sxcybot.listeners.admin.RoleAssignListener; import com.wimdupont.sxcybot.repository.guild.dao.GuildRole; import com.wimdupont.sxcybot.services.guild.GuildRoleService; +import jakarta.annotation.Nonnull; import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.Role; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; import org.springframework.stereotype.Component; -import javax.annotation.Nonnull; import java.util.List; import java.util.function.Predicate; import java.util.stream.Stream; diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/ChatListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/ChatListener.java @@ -5,11 +5,11 @@ import com.wimdupont.sxcybot.enums.Command.Admin; import com.wimdupont.sxcybot.listeners.member.BB8Listener; import com.wimdupont.sxcybot.services.guild.ChatModService; import com.wimdupont.sxcybot.util.Constants.Commands; +import jakarta.annotation.Nonnull; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; import org.springframework.stereotype.Component; -import javax.annotation.Nonnull; import java.util.EnumSet; import java.util.Optional; diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/CommandListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/CommandListener.java @@ -16,11 +16,10 @@ import com.wimdupont.sxcybot.listeners.member.PvmRolePollListener; import com.wimdupont.sxcybot.listeners.member.RuleListener; import com.wimdupont.sxcybot.listeners.member.RulesListener; import com.wimdupont.sxcybot.listeners.member.StatsListener; +import jakarta.annotation.Nonnull; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import org.springframework.stereotype.Component; -import javax.annotation.Nonnull; - @Component public class CommandListener { diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/EventWaiter.java b/src/main/java/com/wimdupont/sxcybot/listeners/EventWaiter.java @@ -0,0 +1,41 @@ +package com.wimdupont.sxcybot.listeners; + +import com.wimdupont.sxcybot.services.guild.ChannelDetailService; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; + +@Component +public class EventWaiter { + + private final ChannelDetailService channelDetailService; + private static final int TIMEOUT = 1; + private static final TimeUnit TIME_UNIT = TimeUnit.MINUTES; + private final Map<Long, MessageResponseWaiter> waitingMessages; + + public EventWaiter(ChannelDetailService channelDetailService) { + this.channelDetailService = channelDetailService; + this.waitingMessages = new HashMap<>(); + } + + public void waitForPrivateChannelEvent(Consumer<MessageReceivedEvent> action, + MessageReceivedEvent event, + PrivateChannel privateChannel) { + var authorId = event.getAuthor().getIdLong(); + var messageResponseWaiter = new MessageResponseWaiter(channelDetailService.getJda(), authorId, action); + + if (waitingMessages.containsKey(authorId)) + waitingMessages.get(authorId).delete(); + + waitingMessages.put(authorId, messageResponseWaiter); + + messageResponseWaiter.waitForEvent(TIMEOUT, TIME_UNIT, + () -> privateChannel.sendMessage("Timed out... Please try again later.").queue()); + } + +} diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/EventWaiterUtil.java b/src/main/java/com/wimdupont/sxcybot/listeners/EventWaiterUtil.java @@ -1,36 +0,0 @@ -package com.wimdupont.sxcybot.listeners; - -import com.jagrosh.jdautilities.commons.waiter.EventWaiter; -import net.dv8tion.jda.api.entities.PrivateChannel; -import net.dv8tion.jda.api.events.message.MessageReceivedEvent; -import net.dv8tion.jda.api.events.message.priv.PrivateMessageReceivedEvent; -import org.springframework.stereotype.Component; - -import java.util.concurrent.TimeUnit; -import java.util.function.Consumer; -import java.util.function.Predicate; - -@Component -public class EventWaiterUtil extends EventWaiter { - - private static final int TIMEOUT = 1; - private static final TimeUnit TIME_UNIT = TimeUnit.MINUTES; - - public void waitForPrivateChannelEvent(Consumer<PrivateMessageReceivedEvent> action, PrivateMessageReceivedEvent event, PrivateChannel privateChannel) { - waitForEvent(PrivateMessageReceivedEvent.class, verifyAuthor(event), action, TIMEOUT, TIME_UNIT, new TimeOutRunner(privateChannel)); - } - - public void waitForPrivateChannelEvent(Consumer<PrivateMessageReceivedEvent> action, MessageReceivedEvent event, PrivateChannel privateChannel) { - waitForEvent(PrivateMessageReceivedEvent.class, verifyAuthor(event), action, TIMEOUT, TIME_UNIT, new TimeOutRunner(privateChannel)); - } - - private Predicate<PrivateMessageReceivedEvent> verifyAuthor(MessageReceivedEvent event) { - return messageReceivedEvent -> messageReceivedEvent.getAuthor().getId().equals(event.getAuthor().getId()); - } - - private Predicate<PrivateMessageReceivedEvent> verifyAuthor(PrivateMessageReceivedEvent event) { - return privateMessageReceivedEvent -> privateMessageReceivedEvent.getAuthor().getId().equals(event.getAuthor().getId()); - } - - -} diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/GuildMemberEventListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/GuildMemberEventListener.java @@ -1,8 +1,9 @@ package com.wimdupont.sxcybot.listeners; import com.wimdupont.sxcybot.services.guild.GuildEventDmerService; +import jakarta.annotation.Nonnull; import net.dv8tion.jda.api.entities.Member; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.guild.member.GuildMemberRemoveEvent; import net.dv8tion.jda.api.exceptions.RateLimitedException; import net.dv8tion.jda.api.hooks.ListenerAdapter; @@ -10,7 +11,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; -import javax.annotation.Nonnull; import java.util.Optional; @Component diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/MessageResponseWaiter.java b/src/main/java/com/wimdupont/sxcybot/listeners/MessageResponseWaiter.java @@ -0,0 +1,52 @@ +package com.wimdupont.sxcybot.listeners; + +import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.entities.channel.ChannelType; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import net.dv8tion.jda.api.hooks.ListenerAdapter; + +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; + +public class MessageResponseWaiter extends ListenerAdapter { + + private final JDA jda; + private final Long authorId; + private final Consumer<MessageReceivedEvent> action; + private final ScheduledExecutorService scheduledExecutorService; + + public MessageResponseWaiter(JDA jda, Long authorId, Consumer<MessageReceivedEvent> action) { + this.scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(); + this.jda = jda; + this.authorId = authorId; + this.action = action; + } + + @Override + public void onMessageReceived(MessageReceivedEvent event) { + var authorId = event.getAuthor().getIdLong(); + + if (event.getChannelType() == ChannelType.PRIVATE + && this.authorId == authorId) { + this.delete(); + action.accept(event); + } + } + + public void waitForEvent(long timeout, TimeUnit unit, Runnable timeoutAction) { + jda.addEventListener(this); + + scheduledExecutorService.schedule(() -> { + timeoutAction.run(); + jda.removeEventListener(this); + }, timeout, unit); + } + + public void delete() { + scheduledExecutorService.shutdownNow(); + jda.removeEventListener(this); + } + +} diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/PollReactionListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/PollReactionListener.java @@ -2,6 +2,7 @@ package com.wimdupont.sxcybot.listeners; import com.wimdupont.sxcybot.services.guild.PollService; import com.wimdupont.sxcybot.util.JdaUtil; +import jakarta.annotation.Nonnull; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.entities.MessageEmbed.Field; @@ -10,7 +11,6 @@ import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; import org.springframework.stereotype.Component; -import javax.annotation.Nonnull; import java.time.LocalDate; import java.util.ArrayList; import java.util.Arrays; @@ -31,7 +31,7 @@ public class PollReactionListener extends ListenerAdapter { if (isPoll(event)) { event.getChannel().retrieveMessageById(event.getMessageId()).queue(message -> { if (message.getEmbeds().size() == 1) { - MessageEmbed messageEmbed = message.getEmbeds().get(0); + MessageEmbed messageEmbed = message.getEmbeds().getFirst(); EmbedBuilder embedBuilder = new EmbedBuilder(); embedBuilder.setTitle(messageEmbed.getTitle()); embedBuilder.setColor(messageEmbed.getColor()); @@ -49,7 +49,7 @@ public class PollReactionListener extends ListenerAdapter { new Field(getFieldNameWithCount(field, value) .orElse(null), value, field.isInline())); } else { - if (field.getName() != null && field.getName().contains(event.getReactionEmote().getEmoji())) { + if (field.getName() != null && field.getName().contains(event.getEmoji().getName())) { String value = field.getValue() != null && !field.getValue().contains("‎") ? field.getValue() + System.lineSeparator() + username : username; @@ -62,7 +62,7 @@ public class PollReactionListener extends ListenerAdapter { } message.editMessageEmbeds(embedBuilder.build()).queue(); if (event.getUser() != null) - message.removeReaction(event.getReaction().getReactionEmote().getEmoji(), event.getUser()).queue(); + message.removeReaction(event.getReaction().getEmoji(), event.getUser()).queue(); } }); } diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/PrivateListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/PrivateListener.java @@ -1,9 +1,8 @@ package com.wimdupont.sxcybot.listeners; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; -import net.dv8tion.jda.api.events.message.priv.PrivateMessageReceivedEvent; public interface PrivateListener { - void process(PrivateMessageReceivedEvent privateEvent, MessageReceivedEvent event); + void process(MessageReceivedEvent privateEvent, MessageReceivedEvent event); } diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/TimeOutRunner.java b/src/main/java/com/wimdupont/sxcybot/listeners/TimeOutRunner.java @@ -1,28 +0,0 @@ -package com.wimdupont.sxcybot.listeners; - -import net.dv8tion.jda.api.entities.MessageChannel; - -public class TimeOutRunner implements Runnable { - - private final MessageChannel messageChannel; - - public TimeOutRunner(MessageChannel messageChannel) { - this.messageChannel = messageChannel; - } - - /** - * When an object implementing interface {@code Runnable} is used - * to create a thread, starting the thread causes the object's - * {@code run} method to be called in that separately executing - * thread. - * <p> - * The general contract of the method {@code run} is that it may - * take any action whatsoever. - * - * @see Thread#run() - */ - @Override - public void run() { - messageChannel.sendMessage("Timed out... Please try again later.").queue(); - } -} diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/admin/BanlistListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/admin/BanlistListener.java @@ -5,7 +5,7 @@ import com.wimdupont.sxcybot.repository.guild.dao.User; import com.wimdupont.sxcybot.services.guild.UserService; import com.wimdupont.sxcybot.util.JdaUtil; import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.exceptions.RateLimitedException; import org.slf4j.Logger; diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/admin/BossUpdateMultiplierListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/admin/BossUpdateMultiplierListener.java @@ -1,10 +1,10 @@ package com.wimdupont.sxcybot.listeners.admin; import com.wimdupont.sxcybot.exceptions.EntityNotFoundException; -import com.wimdupont.sxcybot.listeners.EventWaiterUtil; +import com.wimdupont.sxcybot.listeners.EventWaiter; import com.wimdupont.sxcybot.services.osrs.OsrsHiscoreBossService; import com.wimdupont.sxcybot.util.JdaUtil; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.exceptions.RateLimitedException; import org.slf4j.Logger; @@ -21,12 +21,12 @@ public class BossUpdateMultiplierListener implements EventListener { private static final Logger LOGGER = LoggerFactory.getLogger(BossUpdateMultiplierListener.class); - private final EventWaiterUtil eventWaiterUtil; + private final EventWaiter eventWaiter; private final OsrsHiscoreBossService osrsHiscoreBossService; - public BossUpdateMultiplierListener(EventWaiterUtil eventWaiterUtil, + public BossUpdateMultiplierListener(EventWaiter eventWaiter, OsrsHiscoreBossService osrsHiscoreBossService) { - this.eventWaiterUtil = eventWaiterUtil; + this.eventWaiter = eventWaiter; this.osrsHiscoreBossService = osrsHiscoreBossService; } @@ -35,19 +35,19 @@ public class BossUpdateMultiplierListener implements EventListener { try { PrivateChannel privateChannel = event.getMember().getUser().openPrivateChannel().complete(true); privateChannel.sendMessage("Name of the boss you want to update?").queue(); - eventWaiterUtil.waitForPrivateChannelEvent(nameReceiver -> { + eventWaiter.waitForPrivateChannelEvent(nameReceiver -> { try { var osrsHiscoreBoss = osrsHiscoreBossService.findByName(nameReceiver.getMessage().getContentRaw()); var oldMultiplier = osrsHiscoreBoss.getMultiplier(); privateChannel.sendMessage(String.format("Type the multiplier for the boss of %s (current = %s).", - nameReceiver.getMessage().getContentRaw(),oldMultiplier)).queue(); - eventWaiterUtil.waitForPrivateChannelEvent(descriptionReceiver -> { + nameReceiver.getMessage().getContentRaw(), oldMultiplier)).queue(); + eventWaiter.waitForPrivateChannelEvent(descriptionReceiver -> { try { osrsHiscoreBoss.setMultiplier(Double.parseDouble(descriptionReceiver.getMessage().getContentRaw())); var saved = osrsHiscoreBossService.save(osrsHiscoreBoss); privateChannel.sendMessage(saved + " edited.").queue(); event.getChannel().sendMessage(String.format("Boss multiplier for boss %s has been changed from %s to %s by %s.", - saved.getName(), oldMultiplier, saved.getMultiplier(), JdaUtil.getUser(event))) + saved.getName(), oldMultiplier, saved.getMultiplier(), JdaUtil.getUser(event))) .queue(); } catch (NumberFormatException e) { privateChannel.sendMessage("Please enter a valid multiplier number.").queue(); diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/admin/EditBanlistListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/admin/EditBanlistListener.java @@ -6,7 +6,7 @@ import com.wimdupont.sxcybot.listeners.admin.banlist.DeleteBanlistUserListener; import com.wimdupont.sxcybot.listeners.admin.banlist.UpdateBanlistUserListener; import com.wimdupont.sxcybot.model.EditListenerDto; import com.wimdupont.sxcybot.util.EditListenerUtil; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.exceptions.RateLimitedException; import org.slf4j.Logger; diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/admin/EditPvmListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/admin/EditPvmListener.java @@ -6,7 +6,7 @@ import com.wimdupont.sxcybot.listeners.admin.pvmrole.DeletePvmListener; import com.wimdupont.sxcybot.listeners.admin.pvmrole.UpdatePvmListener; import com.wimdupont.sxcybot.model.EditListenerDto; import com.wimdupont.sxcybot.util.EditListenerUtil; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.exceptions.RateLimitedException; import org.slf4j.Logger; diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/admin/EditRoleListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/admin/EditRoleListener.java @@ -3,10 +3,9 @@ package com.wimdupont.sxcybot.listeners.admin; import com.wimdupont.sxcybot.listeners.Listener; import com.wimdupont.sxcybot.listeners.admin.role.AddRoleListener; import com.wimdupont.sxcybot.listeners.admin.role.DeleteRoleListener; -import com.wimdupont.sxcybot.listeners.admin.role.UpdateRoleListener; import com.wimdupont.sxcybot.model.EditListenerDto; import com.wimdupont.sxcybot.util.EditListenerUtil; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.exceptions.RateLimitedException; import org.slf4j.Logger; @@ -18,16 +17,13 @@ public class EditRoleListener implements Listener { private static final Logger LOGGER = LoggerFactory.getLogger(EditRoleListener.class); private final AddRoleListener addRoleListener; - private final UpdateRoleListener updateRoleListener; private final DeleteRoleListener deleteRoleListener; private final EditListenerUtil editListenerUtil; public EditRoleListener(AddRoleListener addRoleListener, - UpdateRoleListener updateRoleListener, DeleteRoleListener deleteRoleListener, EditListenerUtil editListenerUtil) { this.addRoleListener = addRoleListener; - this.updateRoleListener = updateRoleListener; this.deleteRoleListener = deleteRoleListener; this.editListenerUtil = editListenerUtil; } diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/admin/EditRuleListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/admin/EditRuleListener.java @@ -6,7 +6,7 @@ import com.wimdupont.sxcybot.listeners.admin.rule.DeleteRuleListener; import com.wimdupont.sxcybot.listeners.admin.rule.UpdateRuleListener; import com.wimdupont.sxcybot.model.EditListenerDto; import com.wimdupont.sxcybot.util.EditListenerUtil; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.exceptions.RateLimitedException; import org.slf4j.Logger; diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/admin/RoleAssignListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/admin/RoleAssignListener.java @@ -1,14 +1,14 @@ package com.wimdupont.sxcybot.listeners.admin; -import com.wimdupont.sxcybot.listeners.EventWaiterUtil; +import com.wimdupont.sxcybot.listeners.EventWaiter; import com.wimdupont.sxcybot.listeners.Listener; import com.wimdupont.sxcybot.repository.guild.dao.GuildRole; import com.wimdupont.sxcybot.services.guild.GuildRoleService; -import com.wimdupont.sxcybot.util.DiscordMemberFinderUtil; import com.wimdupont.sxcybot.util.Constants; +import com.wimdupont.sxcybot.util.DiscordMemberFinderUtil; import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.entities.PrivateChannel; import net.dv8tion.jda.api.entities.Role; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.exceptions.RateLimitedException; import org.slf4j.Logger; @@ -24,14 +24,14 @@ import java.util.Optional; public class RoleAssignListener implements Listener { private static final Logger LOGGER = LoggerFactory.getLogger(RoleAssignListener.class); - private final EventWaiterUtil eventWaiterUtil; + private final EventWaiter eventWaiter; private final GuildRoleService guildRoleService; private final DiscordMemberFinderUtil discordMemberFinderUtil; - public RoleAssignListener(EventWaiterUtil eventWaiterUtil, + public RoleAssignListener(EventWaiter eventWaiter, GuildRoleService guildRoleService, DiscordMemberFinderUtil discordMemberFinderUtil) { - this.eventWaiterUtil = eventWaiterUtil; + this.eventWaiter = eventWaiter; this.guildRoleService = guildRoleService; this.discordMemberFinderUtil = discordMemberFinderUtil; } @@ -52,7 +52,7 @@ public class RoleAssignListener implements Listener { embedBuilder.addField(String.valueOf(guildRole.getOrderValue()), String.valueOf(guildRole.getName()), true); } privateChannel.sendMessageEmbeds(embedBuilder.build()).queue(); - eventWaiterUtil.waitForPrivateChannelEvent(roleReceiver -> { + eventWaiter.waitForPrivateChannelEvent(roleReceiver -> { String roleMessage = roleReceiver.getMessage().getContentRaw(); String[] roleNumbers = roleMessage.split(" "); embedBuilder.clearFields(); diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/admin/banlist/AddBanlistUserListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/admin/banlist/AddBanlistUserListener.java @@ -1,34 +1,33 @@ package com.wimdupont.sxcybot.listeners.admin.banlist; -import com.wimdupont.sxcybot.listeners.EventWaiterUtil; +import com.wimdupont.sxcybot.listeners.EventWaiter; import com.wimdupont.sxcybot.listeners.PrivateListener; import com.wimdupont.sxcybot.repository.guild.dao.User; import com.wimdupont.sxcybot.services.guild.UserService; import com.wimdupont.sxcybot.util.JdaUtil; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; -import net.dv8tion.jda.api.events.message.priv.PrivateMessageReceivedEvent; import org.springframework.stereotype.Component; @Component public class AddBanlistUserListener implements PrivateListener { - private final EventWaiterUtil eventWaiterUtil; + private final EventWaiter eventWaiter; private final UserService userService; - public AddBanlistUserListener(EventWaiterUtil eventWaiterUtil, + public AddBanlistUserListener(EventWaiter eventWaiter, UserService userService) { - this.eventWaiterUtil = eventWaiterUtil; + this.eventWaiter = eventWaiter; this.userService = userService; } @Override - public void process(PrivateMessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { - PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel(); + public void process(MessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { + PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel().asPrivateChannel(); privateChannel.sendMessage("Name of the user you want to ban?").queue(); - eventWaiterUtil.waitForPrivateChannelEvent(nameReceiver -> { + eventWaiter.waitForPrivateChannelEvent(nameReceiver -> { privateChannel.sendMessage("Description?").queue(); - eventWaiterUtil.waitForPrivateChannelEvent(descriptionReceiver -> { + eventWaiter.waitForPrivateChannelEvent(descriptionReceiver -> { User userToBan = User.Builder.newBuilder() .name(nameReceiver.getMessage().getContentRaw()) .description(descriptionReceiver.getMessage().getContentRaw()) diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/admin/banlist/DeleteBanlistUserListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/admin/banlist/DeleteBanlistUserListener.java @@ -1,33 +1,32 @@ package com.wimdupont.sxcybot.listeners.admin.banlist; import com.wimdupont.sxcybot.exceptions.EntityNotFoundException; -import com.wimdupont.sxcybot.listeners.EventWaiterUtil; +import com.wimdupont.sxcybot.listeners.EventWaiter; import com.wimdupont.sxcybot.listeners.PrivateListener; import com.wimdupont.sxcybot.repository.guild.dao.User; import com.wimdupont.sxcybot.services.guild.UserService; import com.wimdupont.sxcybot.util.JdaUtil; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; -import net.dv8tion.jda.api.events.message.priv.PrivateMessageReceivedEvent; import org.springframework.stereotype.Component; @Component public class DeleteBanlistUserListener implements PrivateListener { private final UserService userService; - private final EventWaiterUtil eventWaiterUtil; + private final EventWaiter eventWaiter; public DeleteBanlistUserListener(UserService userService, - EventWaiterUtil eventWaiterUtil) { + EventWaiter eventWaiter) { this.userService = userService; - this.eventWaiterUtil = eventWaiterUtil; + this.eventWaiter = eventWaiter; } @Override - public void process(PrivateMessageReceivedEvent privateEvent, MessageReceivedEvent event) { - PrivateChannel privateChannel = privateEvent.getChannel(); + public void process(MessageReceivedEvent privateEvent, MessageReceivedEvent event) { + PrivateChannel privateChannel = privateEvent.getChannel().asPrivateChannel(); privateChannel.sendMessage("Name of the user you want to delete?").queue(); - eventWaiterUtil.waitForPrivateChannelEvent(nameReceiver -> { + eventWaiter.waitForPrivateChannelEvent(nameReceiver -> { try { User userToDelete = userService.findByName(nameReceiver.getMessage().getContentRaw()); userService.delete(userToDelete); diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/admin/banlist/UpdateBanlistUserListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/admin/banlist/UpdateBanlistUserListener.java @@ -1,15 +1,14 @@ package com.wimdupont.sxcybot.listeners.admin.banlist; import com.wimdupont.sxcybot.exceptions.EntityNotFoundException; -import com.wimdupont.sxcybot.listeners.EventWaiterUtil; +import com.wimdupont.sxcybot.listeners.EventWaiter; import com.wimdupont.sxcybot.listeners.PrivateListener; import com.wimdupont.sxcybot.repository.guild.dao.User; import com.wimdupont.sxcybot.services.guild.UserService; import com.wimdupont.sxcybot.util.JdaUtil; import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; -import net.dv8tion.jda.api.events.message.priv.PrivateMessageReceivedEvent; import org.springframework.stereotype.Component; import java.awt.Color; @@ -17,20 +16,20 @@ import java.awt.Color; @Component public class UpdateBanlistUserListener implements PrivateListener { - private final EventWaiterUtil eventWaiterUtil; + private final EventWaiter eventWaiter; private final UserService userService; - public UpdateBanlistUserListener(EventWaiterUtil eventWaiterUtil, + public UpdateBanlistUserListener(EventWaiter eventWaiter, UserService userService) { - this.eventWaiterUtil = eventWaiterUtil; + this.eventWaiter = eventWaiter; this.userService = userService; } @Override - public void process(PrivateMessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { - PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel(); + public void process(MessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { + PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel().asPrivateChannel(); privateChannel.sendMessage("Name of the user you want to update (\"showlist\" to show all names in banlist).").queue(); - eventWaiterUtil.waitForPrivateChannelEvent(nameReceiver -> { + eventWaiter.waitForPrivateChannelEvent(nameReceiver -> { if (nameReceiver.getMessage().getContentRaw().equalsIgnoreCase("showlist")) { EmbedBuilder embedBuilder = new EmbedBuilder(); embedBuilder.setColor(Color.red); @@ -44,7 +43,7 @@ public class UpdateBanlistUserListener implements PrivateListener { try { User userToUpdate = userService.findByName(nameReceiver.getMessage().getContentRaw()); privateChannel.sendMessage(String.format("Type the new description for the ban of %s.", nameReceiver.getMessage().getContentRaw())).queue(); - eventWaiterUtil.waitForPrivateChannelEvent(descriptionReceiver -> { + eventWaiter.waitForPrivateChannelEvent(descriptionReceiver -> { userToUpdate.setDescription(descriptionReceiver.getMessage().getContentRaw()); userToUpdate.setLastModifiedBy(JdaUtil.getName(event).orElse(null)); User saved = userService.save(userToUpdate); diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/admin/pvmrole/AddPvmListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/admin/pvmrole/AddPvmListener.java @@ -1,7 +1,7 @@ package com.wimdupont.sxcybot.listeners.admin.pvmrole; import com.wimdupont.sxcybot.exceptions.EntityNotFoundException; -import com.wimdupont.sxcybot.listeners.EventWaiterUtil; +import com.wimdupont.sxcybot.listeners.EventWaiter; import com.wimdupont.sxcybot.listeners.PrivateListener; import com.wimdupont.sxcybot.repository.guild.pvmrole.dao.PvmRoleUser; import com.wimdupont.sxcybot.services.guild.pvmrole.PvmRoleSnapshotComparatorService; @@ -9,9 +9,8 @@ import com.wimdupont.sxcybot.services.guild.pvmrole.PvmRoleUserService; import com.wimdupont.sxcybot.util.DiscordMemberFinderUtil; import com.wimdupont.sxcybot.util.JdaUtil; import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; -import net.dv8tion.jda.api.events.message.priv.PrivateMessageReceivedEvent; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.stereotype.Component; @@ -20,24 +19,24 @@ import java.awt.Color; @Component public class AddPvmListener implements PrivateListener { - private final EventWaiterUtil eventWaiterUtil; + private final EventWaiter eventWaiter; private final DiscordMemberFinderUtil discordMemberFinderUtil; private final PvmRoleUserService pvmRoleUserService; private final PvmRoleSnapshotComparatorService pvmRoleSnapshotComparatorService; - public AddPvmListener(EventWaiterUtil eventWaiterUtil, + public AddPvmListener(EventWaiter eventWaiter, DiscordMemberFinderUtil discordMemberFinderUtil, PvmRoleUserService pvmRoleUserService, PvmRoleSnapshotComparatorService pvmRoleSnapshotComparatorService) { - this.eventWaiterUtil = eventWaiterUtil; + this.eventWaiter = eventWaiter; this.discordMemberFinderUtil = discordMemberFinderUtil; this.pvmRoleUserService = pvmRoleUserService; this.pvmRoleSnapshotComparatorService = pvmRoleSnapshotComparatorService; } @Override - public void process(PrivateMessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { - PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel(); + public void process(MessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { + PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel().asPrivateChannel(); EmbedBuilder embedBuilder = new EmbedBuilder(); embedBuilder.setColor(Color.RED); embedBuilder.setTitle("Add member for PvM competition"); @@ -45,7 +44,7 @@ public class AddPvmListener implements PrivateListener { embedBuilder.clearFields(); embedBuilder.addField("Type the RSN (RuneScape name) of the member.", "", true); privateChannel.sendMessageEmbeds(embedBuilder.build()).queue(); - eventWaiterUtil.waitForPrivateChannelEvent((rsnReceiver) -> { + eventWaiter.waitForPrivateChannelEvent((rsnReceiver) -> { String creator = JdaUtil.getName(event).orElse(null); try { PvmRoleUser pvmRoleUser = pvmRoleUserService.save(PvmRoleUser.Builder.newBuilder() diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/admin/pvmrole/DeletePvmListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/admin/pvmrole/DeletePvmListener.java @@ -2,7 +2,7 @@ package com.wimdupont.sxcybot.listeners.admin.pvmrole; import com.wimdupont.sxcybot.enums.Command; import com.wimdupont.sxcybot.exceptions.EntityNotFoundException; -import com.wimdupont.sxcybot.listeners.EventWaiterUtil; +import com.wimdupont.sxcybot.listeners.EventWaiter; import com.wimdupont.sxcybot.listeners.PrivateListener; import com.wimdupont.sxcybot.repository.guild.pvmrole.dao.PvmRoleUser; import com.wimdupont.sxcybot.services.guild.pvmrole.PvmKcSnapshotService; @@ -10,10 +10,9 @@ import com.wimdupont.sxcybot.services.guild.pvmrole.PvmRoleUserService; import com.wimdupont.sxcybot.util.Constants.Commands; import com.wimdupont.sxcybot.util.JdaUtil; import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.entities.PrivateChannel; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; -import net.dv8tion.jda.api.events.message.priv.PrivateMessageReceivedEvent; import org.springframework.stereotype.Component; import java.awt.Color; @@ -23,26 +22,26 @@ public class DeletePvmListener implements PrivateListener { private final PvmRoleUserService pvmRoleUserService; private final PvmKcSnapshotService pvmKcSnapshotService; - private final EventWaiterUtil eventWaiterUtil; + private final EventWaiter eventWaiter; public DeletePvmListener(PvmRoleUserService pvmRoleUserService, PvmKcSnapshotService pvmKcSnapshotService, - EventWaiterUtil eventWaiterUtil) { + EventWaiter eventWaiter) { this.pvmRoleUserService = pvmRoleUserService; this.pvmKcSnapshotService = pvmKcSnapshotService; - this.eventWaiterUtil = eventWaiterUtil; + this.eventWaiter = eventWaiter; } @Override - public void process(PrivateMessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { - PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel(); + public void process(MessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { + PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel().asPrivateChannel(); EmbedBuilder embedBuilder = new EmbedBuilder(); embedBuilder.setColor(Color.RED); embedBuilder.setTitle("Delete user from PvM competition."); embedBuilder.addField("Type the discord name or RSN of the user you want to delete.", "", false); privateChannel.sendMessageEmbeds(embedBuilder.build()).queue(); embedBuilder.clearFields(); - eventWaiterUtil.waitForPrivateChannelEvent(discordNameReceiver -> { + eventWaiter.waitForPrivateChannelEvent(discordNameReceiver -> { String name = discordNameReceiver.getMessage().getContentRaw(); event.getGuild().loadMembers().onSuccess(members -> { try { @@ -56,7 +55,7 @@ public class DeletePvmListener implements PrivateListener { , JdaUtil.getMemberById(members, pvmRoleUser.getDiscordId()).orElse(null), pvmRoleUser.getRsn()), false); privateChannel.sendMessageEmbeds(embedBuilder.build()).queue(); embedBuilder.clearFields(); - eventWaiterUtil.waitForPrivateChannelEvent(memberVerifyReceiver -> { + eventWaiter.waitForPrivateChannelEvent(memberVerifyReceiver -> { String verifyMessage = memberVerifyReceiver.getMessage().getContentRaw(); if ("y".equalsIgnoreCase(verifyMessage) || "yes".equalsIgnoreCase(verifyMessage)) { pvmKcSnapshotService.deleteAll(pvmKcSnapshotService.findAllByPvmRoleUser(pvmRoleUser)); diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/admin/pvmrole/UpdatePvmListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/admin/pvmrole/UpdatePvmListener.java @@ -2,17 +2,16 @@ package com.wimdupont.sxcybot.listeners.admin.pvmrole; import com.wimdupont.sxcybot.enums.Command; import com.wimdupont.sxcybot.exceptions.EntityNotFoundException; -import com.wimdupont.sxcybot.listeners.EventWaiterUtil; +import com.wimdupont.sxcybot.listeners.EventWaiter; import com.wimdupont.sxcybot.listeners.PrivateListener; import com.wimdupont.sxcybot.repository.guild.pvmrole.dao.PvmRoleUser; import com.wimdupont.sxcybot.services.guild.pvmrole.PvmRoleUserService; import com.wimdupont.sxcybot.util.Constants.Commands; import com.wimdupont.sxcybot.util.JdaUtil; import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.entities.PrivateChannel; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; -import net.dv8tion.jda.api.events.message.priv.PrivateMessageReceivedEvent; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.stereotype.Component; @@ -22,24 +21,24 @@ import java.awt.Color; public class UpdatePvmListener implements PrivateListener { private final PvmRoleUserService pvmRoleUserService; - private final EventWaiterUtil eventWaiterUtil; + private final EventWaiter eventWaiter; public UpdatePvmListener(PvmRoleUserService pvmRoleUserService, - EventWaiterUtil eventWaiterUtil) { + EventWaiter eventWaiter) { this.pvmRoleUserService = pvmRoleUserService; - this.eventWaiterUtil = eventWaiterUtil; + this.eventWaiter = eventWaiter; } @Override - public void process(PrivateMessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { - PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel(); + public void process(MessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { + PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel().asPrivateChannel(); EmbedBuilder embedBuilder = new EmbedBuilder(); embedBuilder.setColor(Color.RED); embedBuilder.setTitle("Update user for PvM competition."); embedBuilder.addField("Type the discord name of the user you want to update.", "", false); privateChannel.sendMessageEmbeds(embedBuilder.build()).queue(); embedBuilder.clearFields(); - eventWaiterUtil.waitForPrivateChannelEvent(discordNameReceiver -> { + eventWaiter.waitForPrivateChannelEvent(discordNameReceiver -> { String discordName = discordNameReceiver.getMessage().getContentRaw(); event.getGuild().loadMembers().onSuccess(members -> { try { @@ -52,13 +51,13 @@ public class UpdatePvmListener implements PrivateListener { , JdaUtil.getUserByName(members, discordName).orElse(null), pvmRoleUserToUpdate.getRsn()), false); privateChannel.sendMessageEmbeds(embedBuilder.build()).queue(); embedBuilder.clearFields(); - eventWaiterUtil.waitForPrivateChannelEvent(memberVerifyReceiver -> { + eventWaiter.waitForPrivateChannelEvent(memberVerifyReceiver -> { String verifyMessage = memberVerifyReceiver.getMessage().getContentRaw(); if ("y".equalsIgnoreCase(verifyMessage) || "yes".equalsIgnoreCase(verifyMessage)) { embedBuilder.addField("Type the new RSN for the update.", "", false); privateChannel.sendMessageEmbeds(embedBuilder.build()).queue(); embedBuilder.clearFields(); - eventWaiterUtil.waitForPrivateChannelEvent(newRsnReceiver -> { + eventWaiter.waitForPrivateChannelEvent(newRsnReceiver -> { String newRsn = newRsnReceiver.getMessage().getContentRaw(); pvmRoleUserToUpdate.setRsn(newRsn); pvmRoleUserToUpdate.setLastModifiedBy(JdaUtil.getName(event).orElse(null)); diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/admin/role/AddRoleListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/admin/role/AddRoleListener.java @@ -1,15 +1,14 @@ package com.wimdupont.sxcybot.listeners.admin.role; -import com.wimdupont.sxcybot.listeners.EventWaiterUtil; +import com.wimdupont.sxcybot.listeners.EventWaiter; import com.wimdupont.sxcybot.listeners.PrivateListener; import com.wimdupont.sxcybot.repository.guild.dao.GuildRole; import com.wimdupont.sxcybot.services.guild.GuildRoleService; -import com.wimdupont.sxcybot.util.JdaUtil; import com.wimdupont.sxcybot.util.Constants; -import net.dv8tion.jda.api.entities.PrivateChannel; +import com.wimdupont.sxcybot.util.JdaUtil; import net.dv8tion.jda.api.entities.Role; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; -import net.dv8tion.jda.api.events.message.priv.PrivateMessageReceivedEvent; import org.springframework.stereotype.Component; import java.util.Comparator; @@ -19,19 +18,19 @@ import java.util.Optional; public class AddRoleListener implements PrivateListener { private final GuildRoleService guildRoleService; - private final EventWaiterUtil eventWaiterUtil; + private final EventWaiter eventWaiter; public AddRoleListener(GuildRoleService guildRoleService, - EventWaiterUtil eventWaiterUtil) { + EventWaiter eventWaiter) { this.guildRoleService = guildRoleService; - this.eventWaiterUtil = eventWaiterUtil; + this.eventWaiter = eventWaiter; } @Override - public void process(PrivateMessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { - PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel(); + public void process(MessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { + PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel().asPrivateChannel(); privateChannel.sendMessage("Name of the role you want to add?").queue(); - eventWaiterUtil.waitForPrivateChannelEvent(nameReceiver -> { + eventWaiter.waitForPrivateChannelEvent(nameReceiver -> { String roleName = nameReceiver.getMessage().getContentRaw(); Optional<Role> role = event.getGuild().getRoles().stream() .filter(f -> roleName.equalsIgnoreCase(f.getName())) diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/admin/role/DeleteRoleListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/admin/role/DeleteRoleListener.java @@ -1,35 +1,34 @@ package com.wimdupont.sxcybot.listeners.admin.role; import com.wimdupont.sxcybot.exceptions.EntityNotFoundException; -import com.wimdupont.sxcybot.listeners.EventWaiterUtil; +import com.wimdupont.sxcybot.listeners.EventWaiter; import com.wimdupont.sxcybot.listeners.PrivateListener; import com.wimdupont.sxcybot.repository.guild.dao.GuildRole; import com.wimdupont.sxcybot.services.guild.GuildRoleService; -import com.wimdupont.sxcybot.util.JdaUtil; import com.wimdupont.sxcybot.util.Constants; import com.wimdupont.sxcybot.util.Constants.Commands; -import net.dv8tion.jda.api.entities.PrivateChannel; +import com.wimdupont.sxcybot.util.JdaUtil; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; -import net.dv8tion.jda.api.events.message.priv.PrivateMessageReceivedEvent; import org.springframework.stereotype.Component; @Component public class DeleteRoleListener implements PrivateListener { private final GuildRoleService guildRoleService; - private final EventWaiterUtil eventWaiterUtil; + private final EventWaiter eventWaiter; public DeleteRoleListener(GuildRoleService guildRoleService, - EventWaiterUtil eventWaiterUtil) { + EventWaiter eventWaiter) { this.guildRoleService = guildRoleService; - this.eventWaiterUtil = eventWaiterUtil; + this.eventWaiter = eventWaiter; } @Override - public void process(PrivateMessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { - PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel(); + public void process(MessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { + PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel().asPrivateChannel(); privateChannel.sendMessage("Name of the role you want to delete?").queue(); - eventWaiterUtil.waitForPrivateChannelEvent(nameReceiver -> { + eventWaiter.waitForPrivateChannelEvent(nameReceiver -> { try { GuildRole guildRole = guildRoleService.findByName(nameReceiver.getMessage().getContentRaw()); if (guildRole.getElevation() == Constants.ADDED_ROLE_ELEVATION) { diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/admin/role/UpdateRoleListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/admin/role/UpdateRoleListener.java @@ -1,38 +1,37 @@ package com.wimdupont.sxcybot.listeners.admin.role; import com.wimdupont.sxcybot.exceptions.EntityNotFoundException; -import com.wimdupont.sxcybot.listeners.EventWaiterUtil; +import com.wimdupont.sxcybot.listeners.EventWaiter; import com.wimdupont.sxcybot.listeners.PrivateListener; import com.wimdupont.sxcybot.repository.guild.dao.GuildRole; import com.wimdupont.sxcybot.services.guild.GuildRoleService; -import com.wimdupont.sxcybot.util.JdaUtil; import com.wimdupont.sxcybot.util.Constants; import com.wimdupont.sxcybot.util.Constants.Commands; -import net.dv8tion.jda.api.entities.PrivateChannel; +import com.wimdupont.sxcybot.util.JdaUtil; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; -import net.dv8tion.jda.api.events.message.priv.PrivateMessageReceivedEvent; import org.springframework.stereotype.Component; @Component public class UpdateRoleListener implements PrivateListener { private final GuildRoleService guildRoleService; - private final EventWaiterUtil eventWaiterUtil; + private final EventWaiter eventWaiter; public UpdateRoleListener(GuildRoleService guildRoleService, - EventWaiterUtil eventWaiterUtil) { + EventWaiter eventWaiter) { this.guildRoleService = guildRoleService; - this.eventWaiterUtil = eventWaiterUtil; + this.eventWaiter = eventWaiter; } @Override - public void process(PrivateMessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { - PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel(); + public void process(MessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { + PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel().asPrivateChannel(); privateChannel.sendMessage("Type the name of the role you want to update.").queue(); - eventWaiterUtil.waitForPrivateChannelEvent(oldRoleNameReceiver -> { + eventWaiter.waitForPrivateChannelEvent(oldRoleNameReceiver -> { String roleName = oldRoleNameReceiver.getMessage().getContentRaw(); privateChannel.sendMessage("Type the new name for the role.").queue(); - eventWaiterUtil.waitForPrivateChannelEvent(newRoleNameReceiver -> { + eventWaiter.waitForPrivateChannelEvent(newRoleNameReceiver -> { try { GuildRole oldRole = guildRoleService.findByName(roleName); if (oldRole.getElevation() == Constants.ADDED_ROLE_ELEVATION) { diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/admin/rule/AddRuleListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/admin/rule/AddRuleListener.java @@ -1,12 +1,11 @@ package com.wimdupont.sxcybot.listeners.admin.rule; -import com.wimdupont.sxcybot.listeners.EventWaiterUtil; +import com.wimdupont.sxcybot.listeners.EventWaiter; import com.wimdupont.sxcybot.listeners.PrivateListener; import com.wimdupont.sxcybot.repository.guild.dao.Rule; import com.wimdupont.sxcybot.services.guild.RuleService; import com.wimdupont.sxcybot.util.JdaUtil; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; -import net.dv8tion.jda.api.events.message.priv.PrivateMessageReceivedEvent; import org.springframework.stereotype.Component; import java.util.Comparator; @@ -15,18 +14,18 @@ import java.util.Comparator; public class AddRuleListener implements PrivateListener { private final RuleService ruleService; - private final EventWaiterUtil eventWaiterUtil; + private final EventWaiter eventWaiter; public AddRuleListener(RuleService ruleService, - EventWaiterUtil eventWaiterUtil) { + EventWaiter eventWaiter) { this.ruleService = ruleService; - this.eventWaiterUtil = eventWaiterUtil; + this.eventWaiter = eventWaiter; } @Override - public void process(PrivateMessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { + public void process(MessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { privateMessageReceivedEvent.getChannel().sendMessage("Type rule description please").queue(); - eventWaiterUtil.waitForPrivateChannelEvent(e -> { + eventWaiter.waitForPrivateChannelEvent(e -> { String msg = e.getMessage().getContentRaw(); int number = ruleService.findAll().stream().max(Comparator.comparing(Rule::getNumber)).map(Rule::getNumber).orElse(0) + 1; Rule rule = ruleService.save(Rule.Builder.newBuilder() @@ -35,6 +34,6 @@ public class AddRuleListener implements PrivateListener { .build()); e.getChannel().sendMessage(rule + " saved").queue(); event.getChannel().sendMessage(String.format("Rule #%s has been added by %s.", number, JdaUtil.getUser(event))).queue(); - }, privateMessageReceivedEvent, privateMessageReceivedEvent.getChannel()); + }, privateMessageReceivedEvent, privateMessageReceivedEvent.getChannel().asPrivateChannel()); } } diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/admin/rule/DeleteRuleListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/admin/rule/DeleteRuleListener.java @@ -1,14 +1,13 @@ package com.wimdupont.sxcybot.listeners.admin.rule; import com.wimdupont.sxcybot.exceptions.EntityNotFoundException; -import com.wimdupont.sxcybot.listeners.EventWaiterUtil; +import com.wimdupont.sxcybot.listeners.EventWaiter; import com.wimdupont.sxcybot.listeners.PrivateListener; import com.wimdupont.sxcybot.repository.guild.dao.Rule; import com.wimdupont.sxcybot.services.guild.RuleService; import com.wimdupont.sxcybot.util.JdaUtil; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; -import net.dv8tion.jda.api.events.message.priv.PrivateMessageReceivedEvent; import org.springframework.stereotype.Component; @@ -16,19 +15,19 @@ import org.springframework.stereotype.Component; public class DeleteRuleListener implements PrivateListener { private final RuleService ruleService; - private final EventWaiterUtil eventWaiterUtil; + private final EventWaiter eventWaiter; public DeleteRuleListener(RuleService ruleService, - EventWaiterUtil eventWaiterUtil) { + EventWaiter eventWaiter) { this.ruleService = ruleService; - this.eventWaiterUtil = eventWaiterUtil; + this.eventWaiter = eventWaiter; } @Override - public void process(PrivateMessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { - PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel(); + public void process(MessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { + PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel().asPrivateChannel(); privateChannel.sendMessage("Type the # of the rule you wish to delete please.").queue(); - eventWaiterUtil.waitForPrivateChannelEvent(ruleDeleltionReceiver -> { + eventWaiter.waitForPrivateChannelEvent(ruleDeleltionReceiver -> { try { int ruleNumber = Integer.parseInt(ruleDeleltionReceiver.getMessage().getContentRaw()); Rule rule = ruleService.findByNumber(ruleNumber); diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/admin/rule/UpdateRuleListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/admin/rule/UpdateRuleListener.java @@ -1,14 +1,13 @@ package com.wimdupont.sxcybot.listeners.admin.rule; import com.wimdupont.sxcybot.exceptions.EntityNotFoundException; -import com.wimdupont.sxcybot.listeners.EventWaiterUtil; +import com.wimdupont.sxcybot.listeners.EventWaiter; import com.wimdupont.sxcybot.listeners.PrivateListener; import com.wimdupont.sxcybot.repository.guild.dao.Rule; import com.wimdupont.sxcybot.services.guild.RuleService; import com.wimdupont.sxcybot.util.JdaUtil; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; -import net.dv8tion.jda.api.events.message.priv.PrivateMessageReceivedEvent; import org.springframework.stereotype.Component; @@ -16,23 +15,23 @@ import org.springframework.stereotype.Component; public class UpdateRuleListener implements PrivateListener { private final RuleService ruleService; - private final EventWaiterUtil eventWaiterUtil; + private final EventWaiter eventWaiter; public UpdateRuleListener(RuleService ruleService, - EventWaiterUtil eventWaiterUtil) { + EventWaiter eventWaiter) { this.ruleService = ruleService; - this.eventWaiterUtil = eventWaiterUtil; + this.eventWaiter = eventWaiter; } @Override - public void process(PrivateMessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { - PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel(); + public void process(MessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { + PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel().asPrivateChannel(); privateChannel.sendMessage("Type the rule number you want to update.").queue(); - eventWaiterUtil.waitForPrivateChannelEvent(ruleNumberReciever -> { + eventWaiter.waitForPrivateChannelEvent(ruleNumberReciever -> { try { int ruleNumber = Integer.parseInt(ruleNumberReciever.getMessage().getContentRaw()); privateChannel.sendMessage(String.format("Type the new rule description for rule %s.", ruleNumber)).queue(); - eventWaiterUtil.waitForPrivateChannelEvent(descriptionReceiver -> { + eventWaiter.waitForPrivateChannelEvent(descriptionReceiver -> { try { Rule ruleToUpdate = ruleService.findByNumber(ruleNumber); ruleToUpdate.setDescription(descriptionReceiver.getMessage().getContentRaw()); diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/member/BB8Listener.java b/src/main/java/com/wimdupont/sxcybot/listeners/member/BB8Listener.java @@ -2,11 +2,13 @@ package com.wimdupont.sxcybot.listeners.member; import com.wimdupont.sxcybot.listeners.Listener; import com.wimdupont.sxcybot.util.Constants.Emoji; -import net.dv8tion.jda.api.entities.MessageChannel; +import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import net.dv8tion.jda.api.utils.FileUpload; import org.springframework.stereotype.Component; -import java.io.InputStream; +import java.io.File; +import java.net.URL; @Component public class BB8Listener implements Listener { @@ -16,10 +18,15 @@ public class BB8Listener implements Listener { @Override public void process(MessageReceivedEvent event) { MessageChannel channel = event.getChannel(); - InputStream in = getClass().getResourceAsStream(BB8_IMAGE); - if (in != null) - channel.sendMessage("BEEP BOOP! " + Emoji.THUMBS_UP + " " + Emoji.FLAMES) - .addFile(in, "bb8.jpg").queue(); + URL url = getClass().getResource(BB8_IMAGE); + + if (url != null) { + var fileUpload = FileUpload.fromData(new File(url.getFile()).toPath()); + channel.sendMessage(String.format("BEEP BOOP! %s %s", Emoji.THUMBS_UP, Emoji.FLAMES)) + .addFiles(fileUpload).queue(); + } else { + channel.sendMessage("Bzzzt image not found error.").queue(); + } } } diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/member/CustomPollListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/member/CustomPollListener.java @@ -3,7 +3,7 @@ package com.wimdupont.sxcybot.listeners.member; import com.wimdupont.sxcybot.listeners.Listener; import com.wimdupont.sxcybot.util.CustomPollFiller; import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.exceptions.RateLimitedException; import org.slf4j.Logger; diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/member/EventListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/member/EventListener.java @@ -1,11 +1,10 @@ package com.wimdupont.sxcybot.listeners.member; -import com.wimdupont.sxcybot.listeners.EventWaiterUtil; +import com.wimdupont.sxcybot.listeners.EventWaiter; import com.wimdupont.sxcybot.listeners.Listener; import com.wimdupont.sxcybot.repository.guild.dao.Event; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; -import net.dv8tion.jda.api.events.message.priv.PrivateMessageReceivedEvent; import net.dv8tion.jda.api.exceptions.RateLimitedException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -15,10 +14,10 @@ import org.springframework.stereotype.Component; public class EventListener implements Listener { private static final Logger LOGGER = LoggerFactory.getLogger(EventListener.class); - private final EventWaiterUtil eventWaiterUtil; + private final EventWaiter eventWaiter; - public EventListener(EventWaiterUtil eventWaiterUtil) { - this.eventWaiterUtil = eventWaiterUtil; + public EventListener(EventWaiter eventWaiter) { + this.eventWaiter = eventWaiter; } @Override @@ -27,13 +26,13 @@ public class EventListener implements Listener { try { PrivateChannel privateChannel = event.getMember().getUser().openPrivateChannel().complete(true); privateChannel.sendMessage("Name of the event?").queue(); - eventWaiterUtil.waitForPrivateChannelEvent(nameReceiver -> { + eventWaiter.waitForPrivateChannelEvent(nameReceiver -> { privateChannel.sendMessage("Description?").queue(); - eventWaiterUtil.waitForPrivateChannelEvent(descriptionReceiver -> { + eventWaiter.waitForPrivateChannelEvent(descriptionReceiver -> { privateChannel.sendMessage("TimeZone, UTC or PT?").queue(); - eventWaiterUtil.waitForPrivateChannelEvent(timeZoneReceiver -> { + eventWaiter.waitForPrivateChannelEvent(timeZoneReceiver -> { privateChannel.sendMessage("Date?").queue(); - eventWaiterUtil.waitForPrivateChannelEvent(dateReceiver -> + eventWaiter.waitForPrivateChannelEvent(dateReceiver -> finishEventCreation(nameReceiver, descriptionReceiver, timeZoneReceiver, dateReceiver, event), event, privateChannel); }, event, privateChannel); }, event, privateChannel); @@ -44,10 +43,10 @@ public class EventListener implements Listener { } } - private void finishEventCreation(PrivateMessageReceivedEvent nameReceiver, - PrivateMessageReceivedEvent descriptionReceiver, - PrivateMessageReceivedEvent timeZoneReceiver, - PrivateMessageReceivedEvent dateReceiver, + private void finishEventCreation(MessageReceivedEvent nameReceiver, + MessageReceivedEvent descriptionReceiver, + MessageReceivedEvent timeZoneReceiver, + MessageReceivedEvent dateReceiver, MessageReceivedEvent event) { //TODO finish or remove Event createdEvent = Event.Builder.newBuilder() diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/member/ForumListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/member/ForumListener.java @@ -3,7 +3,7 @@ package com.wimdupont.sxcybot.listeners.member; import com.wimdupont.sxcybot.listeners.Listener; import com.wimdupont.sxcybot.services.guild.ChannelDetailService; import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.entities.MessageChannel; +import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/member/PingListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/member/PingListener.java @@ -1,7 +1,7 @@ package com.wimdupont.sxcybot.listeners.member; import com.wimdupont.sxcybot.listeners.Listener; -import net.dv8tion.jda.api.entities.MessageChannel; +import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/member/PollListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/member/PollListener.java @@ -5,6 +5,7 @@ import com.wimdupont.sxcybot.repository.guild.dao.Poll; import com.wimdupont.sxcybot.services.guild.PollService; import com.wimdupont.sxcybot.util.Constants.Reaction; import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.entities.emoji.Emoji; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import org.springframework.stereotype.Component; @@ -35,9 +36,9 @@ public class PollListener implements Listener { event.getChannel().sendTyping().queue(typing -> event.getChannel().sendMessageEmbeds(embedBuilder.build()).queue(message -> { - message.addReaction(Reaction.CHECK_MARK_BUTTON) - .and(message.addReaction(Reaction.CROSS_MARK_BUTTON)) - .and(message.addReaction(Reaction.QUESTION_MARK)) + message.addReaction(Emoji.fromUnicode(Reaction.CHECK_MARK_BUTTON)) + .and(message.addReaction(Emoji.fromUnicode(Reaction.CROSS_MARK_BUTTON))) + .and(message.addReaction(Emoji.fromUnicode(Reaction.QUESTION_MARK))) .queue(); pollService.save(Poll.Builder.newBuilder().messageId(message.getId()).build()); })); diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/member/PvmRoleCheckListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/member/PvmRoleCheckListener.java @@ -2,7 +2,7 @@ package com.wimdupont.sxcybot.listeners.member; import com.wimdupont.sxcybot.listeners.Listener; import com.wimdupont.sxcybot.services.OsrsMonitoringService; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.exceptions.RateLimitedException; import org.slf4j.Logger; diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/member/PvmRolePollListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/member/PvmRolePollListener.java @@ -2,7 +2,7 @@ package com.wimdupont.sxcybot.listeners.member; import com.wimdupont.sxcybot.listeners.Listener; import com.wimdupont.sxcybot.services.PvMRoleResolver; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.exceptions.RateLimitedException; import org.slf4j.Logger; diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/member/RuleListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/member/RuleListener.java @@ -7,7 +7,7 @@ import com.wimdupont.sxcybot.listeners.Listener; import com.wimdupont.sxcybot.services.guild.RuleService; import com.wimdupont.sxcybot.util.Constants.Commands; import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.entities.MessageChannel; +import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/wimdupont/sxcybot/model/EditListenerDto.java b/src/main/java/com/wimdupont/sxcybot/model/EditListenerDto.java @@ -1,7 +1,7 @@ package com.wimdupont.sxcybot.model; import com.wimdupont.sxcybot.listeners.PrivateListener; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/com/wimdupont/sxcybot/services/OsrsMonitoringService.java b/src/main/java/com/wimdupont/sxcybot/services/OsrsMonitoringService.java @@ -8,7 +8,7 @@ import com.wimdupont.sxcybot.services.guild.ChannelDetailService; import com.wimdupont.sxcybot.services.guild.pvmrole.PvmRoleUserService; import com.wimdupont.sxcybot.util.JdaUtil; import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; diff --git a/src/main/java/com/wimdupont/sxcybot/services/PvMRoleResolver.java b/src/main/java/com/wimdupont/sxcybot/services/PvMRoleResolver.java @@ -10,8 +10,8 @@ import com.wimdupont.sxcybot.services.guild.pvmrole.PvmRoleAssignerService; import com.wimdupont.sxcybot.services.guild.pvmrole.PvmRoleSnapshotComparatorService; import com.wimdupont.sxcybot.services.guild.pvmrole.PvmRoleUserService; import net.dv8tion.jda.api.entities.Guild; -import net.dv8tion.jda.api.entities.MessageChannel; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled; diff --git a/src/main/java/com/wimdupont/sxcybot/services/guild/ChatModService.java b/src/main/java/com/wimdupont/sxcybot/services/guild/ChatModService.java @@ -33,7 +33,7 @@ public class ChatModService { var discordId = event.getMember().getUser().getId(); var previousUrlMessages = chatDataRepository.findAllByDiscordIdAndWithUrlTrueOrderByCreatedDateTimeDesc(discordId); - var currentData = persist(discordId, event.getTextChannel().getId(), event.getMessageId()); + var currentData = persist(discordId, event.getChannel().asTextChannel().getId(), event.getMessageId()); return isValidForHistory(previousUrlMessages, event, currentData); } @@ -53,7 +53,7 @@ public class ChatModService { dmWarning(event); } else if (previousUrlMessages.size() >= 4 && event.getMember() != null) { try { - event.getMember().kick("Spamming URL's.").queue(); + event.getMember().kick().reason("Spamming URL's.").queue(); } catch (HierarchyException | ErrorResponseException e) { LOGGER.error(e.getMessage(), e); } diff --git a/src/main/java/com/wimdupont/sxcybot/services/guild/pvmrole/PvmRoleAssignerService.java b/src/main/java/com/wimdupont/sxcybot/services/guild/pvmrole/PvmRoleAssignerService.java @@ -8,8 +8,8 @@ import com.wimdupont.sxcybot.util.JdaUtil; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Member; -import net.dv8tion.jda.api.entities.MessageChannel; import net.dv8tion.jda.api.entities.Role; +import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/wimdupont/sxcybot/services/guild/pvmrole/PvmRoleSnapshotComparatorService.java b/src/main/java/com/wimdupont/sxcybot/services/guild/pvmrole/PvmRoleSnapshotComparatorService.java @@ -8,7 +8,7 @@ import com.wimdupont.sxcybot.repository.guild.pvmrole.dao.PvmKcSnapshot; import com.wimdupont.sxcybot.repository.guild.pvmrole.dao.PvmRoleUser; import com.wimdupont.sxcybot.repository.guild.pvmrole.dao.PvmUserKc; import com.wimdupont.sxcybot.services.osrs.OsrsHiscoreBossService; -import net.dv8tion.jda.api.entities.MessageChannel; +import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; @@ -48,7 +48,7 @@ public class PvmRoleSnapshotComparatorService { .limit(persisted ? 2 : 1) .toList(); for (PvmRole pvmRole : scoreBoard.keySet()) { - BigDecimal points1 = calculatePoints(pvmRole, persisted ? pvmKcSnapshots.get(0) : unpersistedSnapshots.get(0)); + BigDecimal points1 = calculatePoints(pvmRole, persisted ? pvmKcSnapshots.get(0) : unpersistedSnapshots.getFirst()); BigDecimal points2 = calculatePoints(pvmRole, pvmKcSnapshots.get(persisted ? 1 : 0)); BigDecimal result = points1.subtract(points2); if (BigDecimal.ZERO.compareTo(result) < 0) diff --git a/src/main/java/com/wimdupont/sxcybot/util/CustomPollFiller.java b/src/main/java/com/wimdupont/sxcybot/util/CustomPollFiller.java @@ -1,12 +1,12 @@ package com.wimdupont.sxcybot.util; -import com.wimdupont.sxcybot.listeners.EventWaiterUtil; +import com.wimdupont.sxcybot.listeners.EventWaiter; import com.wimdupont.sxcybot.repository.guild.dao.Poll; import com.wimdupont.sxcybot.services.guild.PollService; import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; +import net.dv8tion.jda.api.entities.emoji.Emoji; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; -import net.dv8tion.jda.api.events.message.priv.PrivateMessageReceivedEvent; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; @@ -18,13 +18,13 @@ import java.util.Set; @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class CustomPollFiller { - private final EventWaiterUtil eventWaiterUtil; + private final EventWaiter eventWaiter; private final PollService pollService; private static final String STOP_WORD = "stop"; - public CustomPollFiller(EventWaiterUtil eventWaiterUtil, + public CustomPollFiller(EventWaiter eventWaiter, PollService pollService) { - this.eventWaiterUtil = eventWaiterUtil; + this.eventWaiter = eventWaiter; this.pollService = pollService; } @@ -36,11 +36,11 @@ public class CustomPollFiller { embeddedOption.addField("Please enter an option for the poll", "`stop` to finish and create the poll.", false); privateChannel.sendMessageEmbeds(embeddedOption.build()).queue(); embeddedOption.clear(); - eventWaiterUtil.waitForPrivateChannelEvent(optionReceiver -> { + eventWaiter.waitForPrivateChannelEvent(optionReceiver -> { if (isReadyToStop(optionReceiver)) { event.getChannel().sendTyping().queue(typing -> event.getChannel().sendMessageEmbeds(embedBuilder.build()).queue(message -> { - emojiList.forEach(emoji -> message.addReaction(emoji).queue()); + emojiList.forEach(emoji -> message.addReaction(Emoji.fromUnicode(emoji)).queue()); pollService.save(Poll.Builder.newBuilder().messageId(message.getId()).build()); })); return; @@ -49,7 +49,7 @@ public class CustomPollFiller { embeddedOption.addField(String.format("Please type in a reaction emoji for _%s_.", optionReceiver.getMessage().getContentRaw()), "", false); privateChannel.sendMessageEmbeds(embeddedOption.build()).queue(); embeddedOption.clear(); - eventWaiterUtil.waitForPrivateChannelEvent(emojiReceiver -> { + eventWaiter.waitForPrivateChannelEvent(emojiReceiver -> { if (!emojiList.contains(emojiReceiver.getMessage().getContentRaw())) { if (!isValidEmoji(emojiReceiver.getMessage().getContentRaw())) { privateChannel.sendMessage(String.format("%s is not a valid emoji, please retry this option.", emojiReceiver.getMessage().getContentRaw())).queue(); @@ -66,7 +66,7 @@ public class CustomPollFiller { }, event, privateChannel); } - private boolean isReadyToStop(PrivateMessageReceivedEvent privateMessageReceivedEvent) { + private boolean isReadyToStop(MessageReceivedEvent privateMessageReceivedEvent) { return privateMessageReceivedEvent.getMessage().getContentRaw().equalsIgnoreCase(STOP_WORD); } diff --git a/src/main/java/com/wimdupont/sxcybot/util/DiscordMemberFinderUtil.java b/src/main/java/com/wimdupont/sxcybot/util/DiscordMemberFinderUtil.java @@ -1,9 +1,9 @@ package com.wimdupont.sxcybot.util; -import com.wimdupont.sxcybot.listeners.EventWaiterUtil; +import com.wimdupont.sxcybot.listeners.EventWaiter; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.entities.Member; -import net.dv8tion.jda.api.entities.PrivateChannel; +import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import org.springframework.stereotype.Component; @@ -13,16 +13,16 @@ import java.util.function.Consumer; @Component public class DiscordMemberFinderUtil { - private final EventWaiterUtil eventWaiterUtil; + private final EventWaiter eventWaiter; - public DiscordMemberFinderUtil(EventWaiterUtil eventWaiterUtil) { - this.eventWaiterUtil = eventWaiterUtil; + public DiscordMemberFinderUtil(EventWaiter eventWaiter) { + this.eventWaiter = eventWaiter; } public void onMemberFoundVerification(MessageReceivedEvent event, EmbedBuilder embedBuilder, PrivateChannel privateChannel, Consumer<Member> memberConsumer) { embedBuilder.addField("Type the name of the user.", "Discord username will be looked up first, if no match is found it will search on nickname.", false); privateChannel.sendMessageEmbeds(embedBuilder.build()).queue(); - eventWaiterUtil.waitForPrivateChannelEvent(memberReceiver -> { + eventWaiter.waitForPrivateChannelEvent(memberReceiver -> { String name = memberReceiver.getMessage().getContentRaw(); event.getGuild().loadMembers().onSuccess(memberList -> { if (memberList.isEmpty()) { @@ -33,7 +33,7 @@ public class DiscordMemberFinderUtil { embedBuilder.clearFields(); embedBuilder.addField("Confirm by typing ``yes or y``.", String.format("Is %s the correct member?", member.get()), false); privateChannel.sendMessageEmbeds(embedBuilder.build()).queue(); - eventWaiterUtil.waitForPrivateChannelEvent(memberVerifyReceiver -> { + eventWaiter.waitForPrivateChannelEvent(memberVerifyReceiver -> { String verifyMessage = memberVerifyReceiver.getMessage().getContentRaw(); if ("y".equalsIgnoreCase(verifyMessage) || "yes".equalsIgnoreCase(verifyMessage)) { memberConsumer.accept(member.get()); diff --git a/src/main/java/com/wimdupont/sxcybot/util/EditListenerUtil.java b/src/main/java/com/wimdupont/sxcybot/util/EditListenerUtil.java @@ -1,6 +1,6 @@ package com.wimdupont.sxcybot.util; -import com.wimdupont.sxcybot.listeners.EventWaiterUtil; +import com.wimdupont.sxcybot.listeners.EventWaiter; import com.wimdupont.sxcybot.model.EditListenerDto; import net.dv8tion.jda.api.EmbedBuilder; import org.springframework.stereotype.Component; @@ -10,16 +10,16 @@ import java.awt.Color; @Component public class EditListenerUtil { - private final EventWaiterUtil eventWaiterUtil; + private final EventWaiter eventWaiter; - public EditListenerUtil(EventWaiterUtil eventWaiterUtil) { - this.eventWaiterUtil = eventWaiterUtil; + public EditListenerUtil(EventWaiter eventWaiter) { + this.eventWaiter = eventWaiter; } public void procesEditEvent(EditListenerDto editListenerDto) { EmbedBuilder embedBuilder = getEmbedBuilder(editListenerDto); editListenerDto.privateChannel().sendMessageEmbeds(embedBuilder.build()).queue(); - eventWaiterUtil.waitForPrivateChannelEvent(commandReceiver -> { + eventWaiter.waitForPrivateChannelEvent(commandReceiver -> { switch (commandReceiver.getMessage().getContentRaw()) { case "1" -> editListenerDto.addListener().process(commandReceiver, editListenerDto.event()); case "2" -> editListenerDto.deleteListener().process(commandReceiver, editListenerDto.event()); diff --git a/src/test/java/com/wimdupont/sxcybot/client/GrandExchangeClientTest.java b/src/test/java/com/wimdupont/sxcybot/client/GrandExchangeClientTest.java @@ -2,7 +2,7 @@ package com.wimdupont.sxcybot.client; import com.fasterxml.jackson.databind.ObjectMapper; import com.wimdupont.sxcybot.exceptions.EntityNotFoundException; -import net.dv8tion.jda.api.entities.MessageChannel; +import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; diff --git a/src/test/java/com/wimdupont/sxcybot/client/HiScoreClientTest.java b/src/test/java/com/wimdupont/sxcybot/client/HiScoreClientTest.java @@ -5,8 +5,8 @@ import com.wimdupont.sxcybot.model.OsrsStat; import com.wimdupont.sxcybot.repository.osrs.dao.OsrsHiscoreStat; import com.wimdupont.sxcybot.services.osrs.OsrsHiscoreBossService; import com.wimdupont.sxcybot.services.osrs.OsrsHiscoreStatService; -import net.dv8tion.jda.api.entities.MessageChannel; -import net.dv8tion.jda.api.requests.restaction.MessageAction; +import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; +import net.dv8tion.jda.api.requests.restaction.MessageCreateAction; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -31,7 +31,7 @@ class HiScoreClientTest { @MockBean private MessageChannel messageChannel; @MockBean - private MessageAction messageAction; + private MessageCreateAction messageCreateAction; private HiScoreClient hiScoreClient; @@ -84,7 +84,7 @@ class HiScoreClientTest { @Test void getHiscoreStatsNonExistingPlayer() { String playerName = "007thisplayershouldneverexist007"; - given(messageChannel.sendMessage("No results found. ()")).willReturn(messageAction); + given(messageChannel.sendMessage("No results found. ()")).willReturn(messageCreateAction); Exception exception = assertThrows(EntityNotFoundException.class, () -> hiScoreClient.getHiScoreStats(playerName, messageChannel)); @@ -94,7 +94,7 @@ class HiScoreClientTest { @Test void getHiscoreBossKcNonExistingPlayer() { String playerName = "007thisplayershouldneverexist007"; - given(messageChannel.sendMessage("No results found. ()")).willReturn(messageAction); + given(messageChannel.sendMessage("No results found. ()")).willReturn(messageCreateAction); Exception exception = assertThrows(EntityNotFoundException.class, () -> hiScoreClient.getHiScoreBossKc(playerName, messageChannel));