From 10b327e9f6441a8863227ce3e075a5a587654065 Mon Sep 17 00:00:00 2001 From: davidovski Date: Sat, 11 Oct 2025 04:55:51 +0100 Subject: v0.3.1 --- .../resources/commands/LeaderBoardCommand.java | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/main/java/net/uomc/mineshaft/resources/commands/LeaderBoardCommand.java (limited to 'src/main/java/net/uomc/mineshaft/resources/commands/LeaderBoardCommand.java') diff --git a/src/main/java/net/uomc/mineshaft/resources/commands/LeaderBoardCommand.java b/src/main/java/net/uomc/mineshaft/resources/commands/LeaderBoardCommand.java new file mode 100644 index 0000000..a001577 --- /dev/null +++ b/src/main/java/net/uomc/mineshaft/resources/commands/LeaderBoardCommand.java @@ -0,0 +1,50 @@ +package net.uomc.mineshaft.resources.commands; + +import static java.util.stream.Collectors.toMap; + +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Function; +import java.util.stream.Collectors; + +import com.mouldycheerio.dbot.CustomBot; +import com.mouldycheerio.dbot.commands.CommandDetails; +import com.mouldycheerio.dbot.util.PeelingUtils; + +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import net.uomc.mineshaft.resources.ResourceManager; + +public class LeaderBoardCommand extends ResourceCommand { + + public LeaderBoardCommand(ResourceManager resourceManager) { + super(resourceManager); + setCommandDetails( + CommandDetails.from("leaderboard,lb,top,best", "Lists the most valuable users", "top [@user]")); + + } + + @Override + public void execute(MessageReceivedEvent e, CustomBot op, String[] args) { + AtomicInteger n = new AtomicInteger(0); + op.sendMessage( + e, "Most Valuable Players", "*ranked by inventory value*\n\n" + String.join( + "\n", getResourceManager().getPrimaryResource().getMembers(e.getGuild()).stream().collect( + toMap( + Function.identity(), + user -> getResourceManager() + .getResources() + .stream() + .map(r -> r.getValue(user, e.getGuild().getId()) * r.getValue()) + .reduce((long) 0, (a, b) -> a + b))) + .entrySet().stream() + .sorted( + (o1, o2) -> Long.compare(o2.getValue(), o1.getValue())) + .limit(10) + .map( + entry -> String.format( + "%d <@%s> (**%s**)", + n.incrementAndGet(), + entry.getKey(), + PeelingUtils.amountToString(entry.getValue()))) + .collect(Collectors.toList()))); + } +} -- cgit v1.2.3