From 0a89a072f1e2c6c33a16a25db904583492168e3d Mon Sep 17 00:00:00 2001 From: ChomeNS <95471003+ChomeNS@users.noreply.github.com> Date: Sat, 8 Jul 2023 17:41:11 +0700 Subject: [PATCH] make *info and merge every info related commands to there --- .../chomens_bot/commands/BotUserCommand.java | 61 ------ .../chomens_bot/commands/CreatorCommand.java | 30 --- .../chomens_bot/commands/InfoCommand.java | 198 ++++++++++++++++++ .../commands/ServerInfoCommand.java | 105 ---------- .../chomens_bot/commands/UptimeCommand.java | 47 ----- .../plugins/CommandHandlerPlugin.java | 5 +- 6 files changed, 199 insertions(+), 247 deletions(-) delete mode 100644 src/main/java/land/chipmunk/chayapak/chomens_bot/commands/BotUserCommand.java delete mode 100644 src/main/java/land/chipmunk/chayapak/chomens_bot/commands/CreatorCommand.java create mode 100644 src/main/java/land/chipmunk/chayapak/chomens_bot/commands/InfoCommand.java delete mode 100644 src/main/java/land/chipmunk/chayapak/chomens_bot/commands/ServerInfoCommand.java delete mode 100644 src/main/java/land/chipmunk/chayapak/chomens_bot/commands/UptimeCommand.java diff --git a/src/main/java/land/chipmunk/chayapak/chomens_bot/commands/BotUserCommand.java b/src/main/java/land/chipmunk/chayapak/chomens_bot/commands/BotUserCommand.java deleted file mode 100644 index 75b33dae..00000000 --- a/src/main/java/land/chipmunk/chayapak/chomens_bot/commands/BotUserCommand.java +++ /dev/null @@ -1,61 +0,0 @@ -package land.chipmunk.chayapak.chomens_bot.commands; - -import land.chipmunk.chayapak.chomens_bot.Bot; -import land.chipmunk.chayapak.chomens_bot.command.Command; -import land.chipmunk.chayapak.chomens_bot.command.CommandContext; -import land.chipmunk.chayapak.chomens_bot.command.TrustLevel; -import land.chipmunk.chayapak.chomens_bot.util.ColorUtilities; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.event.ClickEvent; -import net.kyori.adventure.text.event.HoverEvent; -import net.kyori.adventure.text.format.NamedTextColor; - -public class BotUserCommand extends Command { - public BotUserCommand () { - super( - "botuser", - "Shows the bot's username and UUID", - new String[] {}, - new String[] {}, - TrustLevel.PUBLIC - ); - } - - @Override - public Component execute(CommandContext context, String[] args, String[] fullArgs) { - final Bot bot = context.bot; - - final String username = bot.username; - final String uuid = bot.profile.getIdAsString(); - - return Component.translatable( - "The bot's username is: %s and the UUID is: %s", - Component - .text(username) - .hoverEvent( - HoverEvent.showText( - Component - .text("Click here to copy the username to your clipboard") - .color(NamedTextColor.GREEN) - ) - ) - .clickEvent( - ClickEvent.copyToClipboard(username) - ) - .color(ColorUtilities.getColorByString(bot.config.colorPalette.username)), - Component - .text(uuid) - .hoverEvent( - HoverEvent.showText( - Component - .text("Click here to copy the UUID to your clipboard") - .color(NamedTextColor.GREEN) - ) - ) - .clickEvent( - ClickEvent.copyToClipboard(uuid) - ) - .color(ColorUtilities.getColorByString(bot.config.colorPalette.uuid)) - ).color(ColorUtilities.getColorByString(bot.config.colorPalette.defaultColor)); - } -} diff --git a/src/main/java/land/chipmunk/chayapak/chomens_bot/commands/CreatorCommand.java b/src/main/java/land/chipmunk/chayapak/chomens_bot/commands/CreatorCommand.java deleted file mode 100644 index 42bc16f1..00000000 --- a/src/main/java/land/chipmunk/chayapak/chomens_bot/commands/CreatorCommand.java +++ /dev/null @@ -1,30 +0,0 @@ -package land.chipmunk.chayapak.chomens_bot.commands; - -import land.chipmunk.chayapak.chomens_bot.Bot; -import land.chipmunk.chayapak.chomens_bot.command.Command; -import land.chipmunk.chayapak.chomens_bot.command.CommandContext; -import land.chipmunk.chayapak.chomens_bot.command.TrustLevel; -import land.chipmunk.chayapak.chomens_bot.util.ColorUtilities; -import net.kyori.adventure.text.Component; - -public class CreatorCommand extends Command { - public CreatorCommand () { - super( - "creator", - "Shows the bots creator", - new String[] {}, - new String[] {}, - TrustLevel.PUBLIC - ); - } - - @Override - public Component execute(CommandContext context, String[] args, String[] fullArgs) { - final Bot bot = context.bot; - - return Component.empty() - .append(Component.text("ChomeNS Bot ").color(ColorUtilities.getColorByString(bot.config.colorPalette.primary))) - .append(Component.text("is created by ").color(ColorUtilities.getColorByString(bot.config.colorPalette.defaultColor))) - .append(Component.text("chayapak").color(ColorUtilities.getColorByString(bot.config.colorPalette.ownerName))); - } -} diff --git a/src/main/java/land/chipmunk/chayapak/chomens_bot/commands/InfoCommand.java b/src/main/java/land/chipmunk/chayapak/chomens_bot/commands/InfoCommand.java new file mode 100644 index 00000000..75f87710 --- /dev/null +++ b/src/main/java/land/chipmunk/chayapak/chomens_bot/commands/InfoCommand.java @@ -0,0 +1,198 @@ +package land.chipmunk.chayapak.chomens_bot.commands; + +import land.chipmunk.chayapak.chomens_bot.Bot; +import land.chipmunk.chayapak.chomens_bot.command.Command; +import land.chipmunk.chayapak.chomens_bot.command.CommandContext; +import land.chipmunk.chayapak.chomens_bot.command.TrustLevel; +import land.chipmunk.chayapak.chomens_bot.util.ColorUtilities; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.event.ClickEvent; +import net.kyori.adventure.text.event.HoverEvent; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.TextColor; + +import java.io.IOException; +import java.io.RandomAccessFile; +import java.lang.management.ManagementFactory; +import java.lang.management.MemoryUsage; +import java.lang.management.OperatingSystemMXBean; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.nio.ByteBuffer; +import java.nio.channels.FileChannel; +import java.util.Arrays; +import java.util.Optional; +import java.util.concurrent.TimeUnit; + +public class InfoCommand extends Command { + public InfoCommand () { + super( + "info", + "Shows an info about various things", + new String[] { + "", + "", + "", + "", + "" + }, + new String[] {}, + TrustLevel.PUBLIC + ); + } + + @Override + public Component execute(CommandContext context, String[] args, String[] fullArgs) { + final Bot bot = context.bot; + + switch (args[0]) { + case "creator" -> { + return Component.empty() + .append(Component.text("ChomeNS Bot ").color(ColorUtilities.getColorByString(bot.config.colorPalette.primary))) + .append(Component.text("is created by ").color(ColorUtilities.getColorByString(bot.config.colorPalette.defaultColor))) + .append(Component.text("chayapak").color(ColorUtilities.getColorByString(bot.config.colorPalette.ownerName))); + } + case "discord" -> { + final String link = bot.config.discord.inviteLink; + return Component.empty() + .append(Component.text("The Discord invite is ").color(ColorUtilities.getColorByString(bot.config.colorPalette.defaultColor))) + .append( + Component + .text(link) + .clickEvent(ClickEvent.openUrl(link)) + .color(NamedTextColor.BLUE) + ); + } + case "server" -> { + // totallynotskidded™ from extras' serverinfo + final Component component; + + final MemoryUsage heapUsage = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage(); + final OperatingSystemMXBean os = ManagementFactory.getOperatingSystemMXBean(); + + final StringBuilder builder = new StringBuilder(); + + try { + RandomAccessFile file = new RandomAccessFile("/proc/cpuinfo", "r"); + FileChannel channel = file.getChannel(); + + ByteBuffer buffer = ByteBuffer.allocate(1024 * 1024); // 1 MB buffer + long bytesRead = channel.read(buffer); + + while (bytesRead != -1) { + buffer.flip(); + + while (buffer.hasRemaining()) { + builder.append((char) buffer.get()); + } + + buffer.clear(); + bytesRead = channel.read(buffer); + } + + channel.close(); + file.close(); + } catch (IOException ignored) {} + + final TextColor color = ColorUtilities.getColorByString(bot.config.colorPalette.string); + + final String[] lines = builder.toString().split("\n"); + final Optional modelName = Arrays.stream(lines) + .filter(line -> line.startsWith("model name")) + .findFirst(); + final Component cpuModel = modelName + .map(s -> Component.text(s.split("\t: ")[1]).color(color)) + .orElseGet(() -> Component.text("N/A").color(color)); + + InetAddress localHost = null; + + try { + localHost = InetAddress.getLocalHost(); + } catch (UnknownHostException ignored) {} + + component = Component.translatable( + """ + Hostname: %s + Working directory: %s + OS architecture: %s + OS version: %s + OS name: %s + CPU cores: %s + CPU model: %s + Heap memory usage: %s""", + Component.text(localHost == null ? "N/A" : localHost.getHostName()).color(color), + Component.text(System.getProperty("user.dir")).color(color), + Component.text(os.getArch()).color(color), + Component.text(os.getVersion()).color(color), + Component.text(os.getName()).color(color), + Component.text(String.valueOf(Runtime.getRuntime().availableProcessors())).color(color), + cpuModel, + Component + .translatable( + "%s MB / %s MB", + Component.text(heapUsage.getUsed() / 1024L / 1024L), + Component.text(heapUsage.getMax() / 1024L / 1024L) + ).color(color) + ).color(ColorUtilities.getColorByString(bot.config.colorPalette.secondary)); + + return component; + } + case "botuser" -> { + final String username = bot.username; + final String uuid = bot.profile.getIdAsString(); + + return Component.translatable( + "The bot's username is: %s and the UUID is: %s", + Component + .text(username) + .hoverEvent( + HoverEvent.showText( + Component + .text("Click here to copy the username to your clipboard") + .color(NamedTextColor.GREEN) + ) + ) + .clickEvent( + ClickEvent.copyToClipboard(username) + ) + .color(ColorUtilities.getColorByString(bot.config.colorPalette.username)), + Component + .text(uuid) + .hoverEvent( + HoverEvent.showText( + Component + .text("Click here to copy the UUID to your clipboard") + .color(NamedTextColor.GREEN) + ) + ) + .clickEvent( + ClickEvent.copyToClipboard(uuid) + ) + .color(ColorUtilities.getColorByString(bot.config.colorPalette.uuid)) + ).color(ColorUtilities.getColorByString(bot.config.colorPalette.defaultColor)); + } + case "uptime" -> { + final long uptime = ManagementFactory.getRuntimeMXBean().getUptime() / 1000; + + final long days = TimeUnit.SECONDS.toDays(uptime); + final long hours = TimeUnit.SECONDS.toHours(uptime) - (days * 24L); + final long minutes = TimeUnit.SECONDS.toMinutes(uptime) - (TimeUnit.SECONDS.toHours(uptime) * 60); + final long seconds = TimeUnit.SECONDS.toSeconds(uptime) - (TimeUnit.SECONDS.toMinutes(uptime) * 60); + + return Component.translatable( + "The bots uptime is: %s", + Component.translatable( + "%s days, %s hours, %s minutes, %s seconds", + Component.text(days), + Component.text(hours), + Component.text(minutes), + Component.text(seconds) + ).color(NamedTextColor.GREEN) + ).color(ColorUtilities.getColorByString(bot.config.colorPalette.defaultColor)); + } + default -> { + return Component.text("Invalid argument").color(NamedTextColor.RED); + } + } + } +} diff --git a/src/main/java/land/chipmunk/chayapak/chomens_bot/commands/ServerInfoCommand.java b/src/main/java/land/chipmunk/chayapak/chomens_bot/commands/ServerInfoCommand.java deleted file mode 100644 index b8ddd0c9..00000000 --- a/src/main/java/land/chipmunk/chayapak/chomens_bot/commands/ServerInfoCommand.java +++ /dev/null @@ -1,105 +0,0 @@ -package land.chipmunk.chayapak.chomens_bot.commands; - -import land.chipmunk.chayapak.chomens_bot.Bot; -import land.chipmunk.chayapak.chomens_bot.command.Command; -import land.chipmunk.chayapak.chomens_bot.command.CommandContext; -import land.chipmunk.chayapak.chomens_bot.command.TrustLevel; -import land.chipmunk.chayapak.chomens_bot.util.ColorUtilities; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.format.TextColor; - -import java.io.IOException; -import java.io.RandomAccessFile; -import java.lang.management.ManagementFactory; -import java.lang.management.MemoryUsage; -import java.lang.management.OperatingSystemMXBean; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.nio.ByteBuffer; -import java.nio.channels.FileChannel; -import java.util.Arrays; -import java.util.Optional; - -public class ServerInfoCommand extends Command { - public ServerInfoCommand () { - super( - "serverinfo", - "Shows the info about the server that is hosting the bot", - new String[] {}, - new String[] {}, - TrustLevel.PUBLIC - ); - } - - @Override - public Component execute(CommandContext context, String[] args, String[] fullArgs) throws UnknownHostException { - final Bot bot = context.bot; - - // totallynotskidded™ from extras' serverinfo - final Component component; - - final MemoryUsage heapUsage = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage(); - final OperatingSystemMXBean os = ManagementFactory.getOperatingSystemMXBean(); - - final StringBuilder builder = new StringBuilder(); - - try { - RandomAccessFile file = new RandomAccessFile("/proc/cpuinfo", "r"); - FileChannel channel = file.getChannel(); - - ByteBuffer buffer = ByteBuffer.allocate(1024 * 1024); // 1 MB buffer - long bytesRead = channel.read(buffer); - - while (bytesRead != -1) { - buffer.flip(); - - while (buffer.hasRemaining()) { - builder.append((char) buffer.get()); - } - - buffer.clear(); - bytesRead = channel.read(buffer); - } - - channel.close(); - file.close(); - } catch (IOException ignored) {} - - final TextColor color = ColorUtilities.getColorByString(bot.config.colorPalette.string); - - final String[] lines = builder.toString().split("\n"); - final Optional modelName = Arrays.stream(lines) - .filter(line -> line.startsWith("model name")) - .findFirst(); - final Component cpuModel = modelName - .map(s -> Component.text(s.split("\t: ")[1]).color(color)) - .orElseGet(() -> Component.text("N/A").color(color)); - - component = Component.translatable( - """ - Hostname: %s - Working directory: %s - OS architecture: %s - OS version: %s - OS name: %s - CPU cores: %s - CPU model: %s - Heap memory usage: %s""", - Component.text(InetAddress.getLocalHost().getHostName()).color(color), - Component.text(System.getProperty("user.dir")).color(color), - Component.text(os.getArch()).color(color), - Component.text(os.getVersion()).color(color), - Component.text(os.getName()).color(color), - Component.text(String.valueOf(Runtime.getRuntime().availableProcessors())).color(color), - cpuModel, - Component - .translatable( - "%s MB / %s MB", - Component.text(heapUsage.getUsed() / 1024L / 1024L), - Component.text(heapUsage.getMax() / 1024L / 1024L) - ).color(color) - ).color(ColorUtilities.getColorByString(bot.config.colorPalette.secondary)); - - return component; - } -} diff --git a/src/main/java/land/chipmunk/chayapak/chomens_bot/commands/UptimeCommand.java b/src/main/java/land/chipmunk/chayapak/chomens_bot/commands/UptimeCommand.java deleted file mode 100644 index c30e623b..00000000 --- a/src/main/java/land/chipmunk/chayapak/chomens_bot/commands/UptimeCommand.java +++ /dev/null @@ -1,47 +0,0 @@ -package land.chipmunk.chayapak.chomens_bot.commands; - -import land.chipmunk.chayapak.chomens_bot.Bot; -import land.chipmunk.chayapak.chomens_bot.command.Command; -import land.chipmunk.chayapak.chomens_bot.command.CommandContext; -import land.chipmunk.chayapak.chomens_bot.command.TrustLevel; -import land.chipmunk.chayapak.chomens_bot.util.ColorUtilities; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.format.NamedTextColor; - -import java.lang.management.ManagementFactory; -import java.util.concurrent.TimeUnit; - -public class UptimeCommand extends Command { - public UptimeCommand () { - super( - "uptime", - "Shows the bots uptime", - new String[] {}, - new String[] {}, - TrustLevel.PUBLIC - ); - } - - @Override - public Component execute(CommandContext context, String[] args, String[] fullArgs) { - final Bot bot = context.bot; - - final long uptime = ManagementFactory.getRuntimeMXBean().getUptime() / 1000; - - long days = TimeUnit.SECONDS.toDays(uptime); - long hours = TimeUnit.SECONDS.toHours(uptime) - (days * 24L); - long minutes = TimeUnit.SECONDS.toMinutes(uptime) - (TimeUnit.SECONDS.toHours(uptime) * 60); - long seconds = TimeUnit.SECONDS.toSeconds(uptime) - (TimeUnit.SECONDS.toMinutes(uptime) * 60); - - return Component.translatable( - "The bots uptime is: %s", - Component.translatable( - "%s days, %s hours, %s minutes, %s seconds", - Component.text(days), - Component.text(hours), - Component.text(minutes), - Component.text(seconds) - ).color(NamedTextColor.GREEN) - ).color(ColorUtilities.getColorByString(bot.config.colorPalette.defaultColor)); - } -} diff --git a/src/main/java/land/chipmunk/chayapak/chomens_bot/plugins/CommandHandlerPlugin.java b/src/main/java/land/chipmunk/chayapak/chomens_bot/plugins/CommandHandlerPlugin.java index f89b97ae..12578ff9 100644 --- a/src/main/java/land/chipmunk/chayapak/chomens_bot/plugins/CommandHandlerPlugin.java +++ b/src/main/java/land/chipmunk/chayapak/chomens_bot/plugins/CommandHandlerPlugin.java @@ -30,7 +30,6 @@ public class CommandHandlerPlugin { registerCommand(new CommandBlockCommand()); registerCommand(new CowsayCommand()); registerCommand(new EchoCommand()); - registerCommand(new CreatorCommand()); registerCommand(new DiscordCommand()); registerCommand(new HelpCommand()); registerCommand(new TestCommand()); @@ -54,17 +53,15 @@ public class CommandHandlerPlugin { registerCommand(new EndCommand()); registerCommand(new CloopCommand()); registerCommand(new WeatherCommand()); - registerCommand(new ServerInfoCommand()); - registerCommand(new BotUserCommand()); registerCommand(new GenerateMazeCommand()); registerCommand(new TranslateCommand()); registerCommand(new KickCommand()); registerCommand(new ClearChatQueueCommand()); registerCommand(new FilterCommand()); - registerCommand(new UptimeCommand()); registerCommand(new MailCommand()); registerCommand(new SeenCommand()); registerCommand(new EvalCommand()); + registerCommand(new InfoCommand()); } public void registerCommand (Command command) {