make the bot worse :(

This commit is contained in:
Chayapak 2023-03-31 15:03:04 +07:00
parent e1dd0748f3
commit 9146c38450
7 changed files with 120 additions and 26 deletions

View file

@ -65,6 +65,8 @@ public class Bot {
try { try {
DiscordPlugin.readyLatch().await(); DiscordPlugin.readyLatch().await();
Thread.sleep(2000); // prob the worst way to fix this thing
} catch (InterruptedException ignored) { System.exit(1); } } catch (InterruptedException ignored) { System.exit(1); }
this.chat = new ChatPlugin(this); this.chat = new ChatPlugin(this);
@ -84,16 +86,12 @@ public class Bot {
this.bruhify = new BruhifyPlugin(this); this.bruhify = new BruhifyPlugin(this);
this.grepLog = new GrepLogPlugin(this); this.grepLog = new GrepLogPlugin(this);
try {
Thread.sleep(1000); // real
} catch (InterruptedException ignored) {
System.exit(1);
}
reconnect(); reconnect();
} }
public void reconnect () { public void reconnect () {
if (session != null) session.disconnect("Disconnect");
if (_username == null) username = RandomStringUtils.randomAlphabetic(8); if (_username == null) username = RandomStringUtils.randomAlphabetic(8);
else username = _username; else username = _username;
@ -105,15 +103,15 @@ public class Bot {
@Override @Override
public void packetReceived(Session session, Packet packet) { public void packetReceived(Session session, Packet packet) {
for (SessionListener listener : listeners) {
listener.packetReceived(session, packet);
}
if (packet instanceof ClientboundLoginPacket) { if (packet instanceof ClientboundLoginPacket) {
for (SessionListener listener : listeners) { for (SessionListener listener : listeners) {
listener.connected(new ConnectedEvent(session)); listener.connected(new ConnectedEvent(session));
} }
} }
for (SessionListener listener : listeners) {
listener.packetReceived(session, packet);
}
} }
@Override @Override

View file

@ -0,0 +1,43 @@
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 net.kyori.adventure.text.Component;
import java.util.ArrayList;
import java.util.List;
public class EndCommand implements Command {
public String name() { return "end"; }
public String description() {
return "End/Restarts the bot";
}
public List<String> usage() {
final List<String> usages = new ArrayList<>();
usages.add("");
return usages;
}
public List<String> alias() {
final List<String> aliases = new ArrayList<>();
aliases.add("restart");
return aliases;
}
public int trustLevel() {
return 1;
}
public Component execute(CommandContext context, String[] args, String[] fullArgs) {
final Bot bot = context.bot();
bot.reconnect();
return Component.text("success");
}
}

View file

@ -0,0 +1,47 @@
package land.chipmunk.chayapak.chomens_bot.commands;
import land.chipmunk.chayapak.chomens_bot.Bot;
import land.chipmunk.chayapak.chomens_bot.chatParsers.data.MutablePlayerListEntry;
import land.chipmunk.chayapak.chomens_bot.command.Command;
import land.chipmunk.chayapak.chomens_bot.command.CommandContext;
import net.kyori.adventure.text.Component;
import java.util.ArrayList;
import java.util.List;
// ayunsudo renamed.
public class SudoAllCommand implements Command {
public String name() { return "sudoall"; }
public String description() {
return "Sudoes everyone";
}
public List<String> usage() {
final List<String> usages = new ArrayList<>();
usages.add("<{c:message|command}>");
return usages;
}
public List<String> alias() {
final List<String> aliases = new ArrayList<>();
aliases.add("ayunsudo");
return aliases;
}
public int trustLevel() {
return 1;
}
public Component execute(CommandContext context, String[] args, String[] fullArgs) {
final Bot bot = context.bot();
for (MutablePlayerListEntry entry : bot.players().list()) {
bot.core().run("essentials:sudo " + entry.profile().getName() + " " + String.join(" ", args));
}
return Component.text("success");
}
}

View file

@ -55,7 +55,7 @@ public class ChatCommandHandlerPlugin extends ChatPlugin.ChatListener {
final PlayerCommandContext context = new PlayerCommandContext(bot, displayName, prefix, selector, message.sender(), bot.hashing().hash(), bot.hashing().ownerHash()); final PlayerCommandContext context = new PlayerCommandContext(bot, displayName, prefix, selector, message.sender(), bot.hashing().hash(), bot.hashing().ownerHash());
final Component output = bot.commandHandler().executeCommand(commandString, context, false, bot.hashing().hash(), bot.hashing().ownerHash(), null); final Component output = bot.commandHandler().executeCommand(commandString, context, true, false, bot.hashing().hash(), bot.hashing().ownerHash(), null);
final String textOutput = ((TextComponent) output).content(); final String textOutput = ((TextComponent) output).content();
if (!textOutput.equals("success")) { if (!textOutput.equals("success")) {

View file

@ -44,13 +44,15 @@ public class CommandHandlerPlugin {
registerCommand(new TimeCommand()); registerCommand(new TimeCommand());
registerCommand(new BruhifyCommand()); registerCommand(new BruhifyCommand());
registerCommand(new GrepLogCommand()); registerCommand(new GrepLogCommand());
registerCommand(new SudoAllCommand());
registerCommand(new EndCommand());
} }
public void registerCommand (Command command) { public void registerCommand (Command command) {
commands.add(command); commands.add(command);
} }
public Component executeCommand (String input, CommandContext context, boolean discord, String hash, String ownerHash, MessageReceivedEvent event) { public Component executeCommand (String input, CommandContext context, boolean inGame, boolean discord, String hash, String ownerHash, MessageReceivedEvent event) {
final String[] splitInput = input.split("\\s+"); final String[] splitInput = input.split("\\s+");
final String commandName = splitInput[0]; final String commandName = splitInput[0];
@ -64,15 +66,15 @@ public class CommandHandlerPlugin {
final String[] fullArgs = Arrays.copyOfRange(splitInput, 1, splitInput.length); final String[] fullArgs = Arrays.copyOfRange(splitInput, 1, splitInput.length);
final int longestUsageIndex = getLongestUsageIndex(command.usage()); final int longestUsageIndex = getLongestUsageIndex(command.usage());
final String usage = command.usage().get(longestUsageIndex); final String usage = command.usage().get(longestUsageIndex);
final int minimumArgs = getMinimumArgs(usage, discord, command.trustLevel()); final int minimumArgs = getMinimumArgs(usage, inGame, command.trustLevel());
final int maximumArgs = getMaximumArgs(usage, discord, command.trustLevel()); final int maximumArgs = getMaximumArgs(usage, inGame, command.trustLevel());
if (fullArgs.length < minimumArgs) return Component.text("Excepted minimum of " + minimumArgs + " argument(s), got " + fullArgs.length).color(NamedTextColor.RED); if (fullArgs.length < minimumArgs) return Component.text("Excepted minimum of " + minimumArgs + " argument(s), got " + fullArgs.length).color(NamedTextColor.RED);
if (fullArgs.length > maximumArgs && !usage.contains("{")) return Component.text("Too much arguments, expected " + maximumArgs + " max").color(NamedTextColor.RED); if (fullArgs.length > maximumArgs && !usage.contains("{")) return Component.text("Too much arguments, expected " + maximumArgs + " max").color(NamedTextColor.RED);
String userHash = ""; String userHash = "";
if (trustLevel > 0 && splitInput.length >= 2) userHash = splitInput[1]; if (trustLevel > 0 && splitInput.length >= 2) userHash = splitInput[1];
final String[] args = Arrays.copyOfRange(splitInput, (trustLevel > 0 && !discord) ? 2 : 1, splitInput.length); final String[] args = Arrays.copyOfRange(splitInput, (trustLevel > 0 && inGame) ? 2 : 1, splitInput.length);
// fix shit random messy code // fix shit random messy code
if (command.trustLevel() > 0) { if (command.trustLevel() > 0) {
@ -109,7 +111,7 @@ public class CommandHandlerPlugin {
exception.printStackTrace(); exception.printStackTrace();
final String stackTrace = ExceptionUtils.getStackTrace(exception); final String stackTrace = ExceptionUtils.getStackTrace(exception);
if (!discord) { if (inGame) {
return Component return Component
.text("An error occurred while trying to execute the command, hover here for more details", NamedTextColor.RED) .text("An error occurred while trying to execute the command, hover here for more details", NamedTextColor.RED)
.hoverEvent( .hoverEvent(
@ -138,7 +140,7 @@ public class CommandHandlerPlugin {
return longestIndex; return longestIndex;
} }
private static int getMinimumArgs(String usage, boolean discord, int trustLevel) { private static int getMinimumArgs(String usage, boolean inGame, int trustLevel) {
int count = 0; int count = 0;
for (int i = 0; i < usage.length(); i++) { for (int i = 0; i < usage.length(); i++) {
if (usage.charAt(i) == '<') { if (usage.charAt(i) == '<') {
@ -146,18 +148,18 @@ public class CommandHandlerPlugin {
} }
} }
if (usage.contains("<hash>")) count--; // bad fix? if (usage.contains("<hash>")) count--; // bad fix?
if ((discord && trustLevel > 0)) count--; if ((!inGame && trustLevel > 0)) count--;
return count; return count;
} }
private static int getMaximumArgs(String usage, boolean discord, int trustLevel) { private static int getMaximumArgs(String usage, boolean inGame, int trustLevel) {
int count = 0; int count = 0;
for (int i = 0; i < usage.length(); i++) { for (int i = 0; i < usage.length(); i++) {
if (usage.charAt(i) == '<' || usage.charAt(i) == '[') { if (usage.charAt(i) == '<' || usage.charAt(i) == '[') {
count++; count++;
} }
} }
if (discord && trustLevel > 0) count++; if (!inGame && trustLevel > 0) count++;
return count; return count;
} }
} }

View file

@ -84,7 +84,7 @@ public class ConsolePlugin {
if (line.startsWith(prefix)) { if (line.startsWith(prefix)) {
final ConsoleCommandContext context = new ConsoleCommandContext(bot, prefix, "h", "o"); // ? should the hashes be hardcoded? final ConsoleCommandContext context = new ConsoleCommandContext(bot, prefix, "h", "o"); // ? should the hashes be hardcoded?
final Component output = bot.commandHandler().executeCommand(line.substring(prefix.length()), context, false, "h", "o", null); final Component output = bot.commandHandler().executeCommand(line.substring(prefix.length()), context, false, false, "h", "o", null);
final String textOutput = ((TextComponent) output).content(); final String textOutput = ((TextComponent) output).content();
if (!textOutput.equals("success")) { if (!textOutput.equals("success")) {

View file

@ -1,15 +1,17 @@
package land.chipmunk.chayapak.chomens_bot.plugins; package land.chipmunk.chayapak.chomens_bot.plugins;
import com.github.steveice10.packetlib.event.session.ConnectedEvent; import com.github.steveice10.mc.protocol.packet.ingame.clientbound.ClientboundLoginPacket;
import com.github.steveice10.packetlib.Session;
import com.github.steveice10.packetlib.event.session.DisconnectedEvent; import com.github.steveice10.packetlib.event.session.DisconnectedEvent;
import com.github.steveice10.packetlib.event.session.SessionAdapter; import com.github.steveice10.packetlib.event.session.SessionAdapter;
import land.chipmunk.chayapak.chomens_bot.util.EscapeCodeBlock; import com.github.steveice10.packetlib.packet.Packet;
import lombok.Getter;
import land.chipmunk.chayapak.chomens_bot.Bot; import land.chipmunk.chayapak.chomens_bot.Bot;
import land.chipmunk.chayapak.chomens_bot.Configuration; import land.chipmunk.chayapak.chomens_bot.Configuration;
import land.chipmunk.chayapak.chomens_bot.Main; import land.chipmunk.chayapak.chomens_bot.Main;
import land.chipmunk.chayapak.chomens_bot.command.DiscordCommandContext; import land.chipmunk.chayapak.chomens_bot.command.DiscordCommandContext;
import land.chipmunk.chayapak.chomens_bot.util.ComponentUtilities; import land.chipmunk.chayapak.chomens_bot.util.ComponentUtilities;
import land.chipmunk.chayapak.chomens_bot.util.EscapeCodeBlock;
import lombok.Getter;
import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.JDABuilder; import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.Message;
@ -71,7 +73,9 @@ public class DiscordPlugin {
bot.addListener(new SessionAdapter() { bot.addListener(new SessionAdapter() {
@Override @Override
public void connected(ConnectedEvent event) { public void packetReceived (Session session, Packet packet) {
if (!(packet instanceof ClientboundLoginPacket)) return;
boolean channelAlreadyAddedListeners = alreadyAddedListeners.getOrDefault(channelId, false); boolean channelAlreadyAddedListeners = alreadyAddedListeners.getOrDefault(channelId, false);
sendMessageInstantly("Successfully connected to: " + "`" + bot.host() + ":" + bot.port() + "`", channelId); sendMessageInstantly("Successfully connected to: " + "`" + bot.host() + ":" + bot.port() + "`", channelId);
@ -92,7 +96,7 @@ public class DiscordPlugin {
if (message.startsWith(prefix)) { if (message.startsWith(prefix)) {
final DiscordCommandContext context = new DiscordCommandContext(bot, prefix, event, null, null); final DiscordCommandContext context = new DiscordCommandContext(bot, prefix, event, null, null);
final Component output = bot.commandHandler().executeCommand(message.substring(prefix.length()), context, true, null, null, event); final Component output = bot.commandHandler().executeCommand(message.substring(prefix.length()), context, false, true, null, null, event);
final String textOutput = ((TextComponent) output).content(); final String textOutput = ((TextComponent) output).content();
if (!textOutput.equals("success")) { if (!textOutput.equals("success")) {