sxcybot

Discord bot for OSRS based channels
git clone git://git.wimdupont.com/sxcybot.git
Log | Files | Refs | README | LICENSE

commit 99713dca2f63576b9bc801b4f5bfafcec0de017e
parent 51cfce173296faf0e8327d0c8c24450ae0bda556
Author: Wim Dupont <wim@wimdupont.com>
Date:   Fri,  7 Nov 2025 07:44:24 +0100

added spin configuration

Diffstat:
Msrc/main/java/com/wimdupont/sxcybot/listeners/member/SpinListener.java | 31+++++++++++++++++++++++++++++--
1 file changed, 29 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/wimdupont/sxcybot/listeners/member/SpinListener.java b/src/main/java/com/wimdupont/sxcybot/listeners/member/SpinListener.java @@ -4,12 +4,17 @@ import com.wimdupont.sxcybot.enums.Command; import com.wimdupont.sxcybot.listeners.Listener; import com.wimdupont.sxcybot.util.Constants.Commands; import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.entities.channel.unions.MessageChannelUnion; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import net.dv8tion.jda.api.requests.restaction.pagination.PinnedMessagePaginationAction.PinnedMessage; import org.springframework.data.util.Pair; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import java.awt.Color; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Map; import java.util.random.RandomGenerator; @Component @@ -20,12 +25,15 @@ public class SpinListener implements Listener { var channel = event.getChannel(); try { var bounds = getBounds(event.getMessage().getContentRaw()); - var random = String.valueOf(getRandom(bounds)); + var random = getRandom(bounds); + var reward = getRewards(channel).get(random); EmbedBuilder embedBuilder = new EmbedBuilder(); embedBuilder.setColor(Color.red); embedBuilder.setTitle(String.format("Spinning Result (%s)", bounds)); - embedBuilder.setDescription(random); + embedBuilder.setDescription(reward == null + ? "You've rolled **%d**!".formatted(random) + : "You've rolled **%d** and won: **%s**!".formatted(random, reward)); channel.sendMessageEmbeds(embedBuilder.build()).queue(); } catch (Exception e) { @@ -64,4 +72,23 @@ public class SpinListener implements Listener { : commandLength); } + private Map<Integer, String> getRewards(MessageChannelUnion channel) { + var rewards = new HashMap<Integer, String>(); + var configMessage = channel.retrievePinnedMessages() + .stream() + .filter(f -> f.getMessage().getContentRaw().toLowerCase().contains("item prize pool")) + .max(Comparator.comparing(PinnedMessage::getTimePinned)) + .map(f -> f.getMessage().getContentRaw()); + + for (String line : configMessage.orElse("").split("\n")) { + if (StringUtils.hasLength(line)) { + var parts = line.split("\\)"); + if (parts.length == 2) { + rewards.put(Integer.parseInt(parts[0].trim()), parts[1].trim()); + } + } + } + return rewards; + } + }