Skip to content

Commit

Permalink
типо шиза
Browse files Browse the repository at this point in the history
  • Loading branch information
NazrinNya committed Jul 7, 2023
1 parent 9068f1f commit 9cdaf66
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 22 deletions.
4 changes: 2 additions & 2 deletions src/main/java/plugin/Ploogin.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@
import static mindustry.Vars.player;
import static plugin.ConfigJson.discordurl;
import static plugin.commands.BanMenu.loadBanMenu;
import static plugin.functions.MongoDB.MongoDbPlayerCreation;
import static plugin.functions.MongoDB.MongoDbPlayerRankCheck;
import static plugin.functions.MongoDB.*;
import static plugin.functions.Other.kickIfBanned;
import static plugin.functions.Other.welcomeMenu;
import static plugin.utils.Checks.isConsole;
Expand Down Expand Up @@ -62,6 +61,7 @@ public void init() {
Player plr = event.player;
welcomeMenu(plr);
MongoDbPlayerCreation(plr);
MongoDbPlayerNameCheck(plr);
MongoDbPlayerRankCheck(plr.uuid());
});
Events.on(EventType.PlayerConnect.class, event -> {
Expand Down
60 changes: 45 additions & 15 deletions src/main/java/plugin/discord/Bot.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import arc.Core;
import arc.Events;
import arc.util.Log;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.UpdateOptions;
import com.mongodb.client.model.Updates;
Expand Down Expand Up @@ -36,6 +37,7 @@
import java.util.Collections;
import java.util.Date;
import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern;

import static arc.util.Strings.stripColors;
import static mindustry.Vars.*;
Expand Down Expand Up @@ -70,15 +72,21 @@ public static void load(){
// the stuff that logs if bot is started and also some random events
public static void init(){
Log.info("Bot started");
Events.on(EventType.PlayerChatEvent.class, event ->
channel.sendMessage("`"+event.player.plainName() + ": " + event.message+"`")
);
Events.on(EventType.PlayerJoin.class, event ->
channel.sendMessage("`"+event.player.plainName() + " joined the server!"+"`")
);
Events.on(EventType.PlayerLeave.class, event ->
channel.sendMessage("`"+event.player.plainName() + " left the server!"+"`")
);
Events.on(EventType.PlayerChatEvent.class, event -> {
Document user = getDoc(event.player.uuid());
if (event.message.startsWith("/")) {
return;
}
channel.sendMessage("`" + event.player.plainName() + ": " + event.message + "`");
});
Events.on(EventType.PlayerJoin.class, event -> {
Document user = getDoc(event.player.uuid());
channel.sendMessage("`" + event.player.plainName() + " [" + user.getInteger("id") + "]" + " joined the server!" + "`");
});
Events.on(EventType.PlayerLeave.class, event -> {
Document user = getDoc(event.player.uuid());
channel.sendMessage("`" + event.player.plainName() + " [" + user.getInteger("id") + "]" + " left the server!" + "`");
});
}
// creating listener once message is created
private static void onMessageCreate(MessageCreateEvent listener){
Expand Down Expand Up @@ -153,6 +161,15 @@ private static void registerSlashCommands(){
"Player name"
))
).createGlobal(api).join();
SlashCommand searchCommand = SlashCommand.with("search", "Searchs the players in db",
Collections.singletonList(
SlashCommandOption.create(
SlashCommandOptionType.STRING,
"name",
"Player name",
true
))
).createGlobal(api).join();
}
// calling slash command functions once they got used
private static void addSlashCommandListener(SlashCommandCreateEvent listener) {
Expand Down Expand Up @@ -260,17 +277,13 @@ private static void addSlashCommandListener(SlashCommandCreateEvent listener) {
case "stats" -> {
int id = Math.toIntExact(listener.getSlashCommandInteraction().getOptionByName("id").flatMap(SlashCommandInteractionOption::getLongValue).orElse(2147483647L));
String name= listener.getSlashCommandInteraction().getOptionByName("name").flatMap(SlashCommandInteractionOption::getStringValue).orElse("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa");
Player player = notNullElse(findPlayerByName(name), findPlayerByID(id));
if (player == null) {

}
Document user = notNullElse(getDoc(id), getDoc(player.uuid()));
Document user = notNullElse(getDoc(id), getDoc(name));
if (user == null){
listener.getSlashCommandInteraction().createImmediateResponder().setContent("Could not find that player!").respond();
return;
}
String discordId = String.valueOf(user.getLong("discordid"));
if (discordId == null){
if (discordId.equals("0")){
discordId = "none";
}
EmbedBuilder embed = new EmbedBuilder()
Expand All @@ -282,6 +295,23 @@ private static void addSlashCommandListener(SlashCommandCreateEvent listener) {
.addField("Discord (if linked)", "<@" +discordId +">");
listener.getSlashCommandInteraction().createImmediateResponder().addEmbed(embed).respond();
}
case "search" -> {
String name= listener.getSlashCommandInteraction().getOptionByName("name").flatMap(SlashCommandInteractionOption::getStringValue).orElse("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa");
StringBuilder list = new StringBuilder();
Pattern pattern = Pattern.compile(".?" +name + ".?", Pattern.CASE_INSENSITIVE);
list.append("```Results:\n\n");
MongoCursor<Document> cursor = playerCollection.find(Filters.regex("name", pattern)).limit(10).iterator();
try {
while(cursor.hasNext()) {
Document csr = cursor.next();
list.append(csr.get("name")).append("; ID: ").append(csr.get("id")).append("\n");
}
} finally {
cursor.close();
}
list.append("```");
listener.getSlashCommandInteraction().createImmediateResponder().setContent(String.valueOf(list)).respond();
}
}
}
}
19 changes: 17 additions & 2 deletions src/main/java/plugin/functions/MongoDB.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
package plugin.functions;

import com.mongodb.client.model.Filters;
import com.mongodb.client.model.UpdateOptions;
import com.mongodb.client.model.Updates;
import mindustry.gen.Groups;
import mindustry.gen.Player;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.bson.types.ObjectId;

import static plugin.Ploogin.playerCollection;
import static plugin.utils.FindDocument.getDoc;

public class MongoDB {
public static void MongoDbPlayerCreation(Player eventPlayer){
Expand All @@ -16,7 +20,8 @@ public static void MongoDbPlayerCreation(Player eventPlayer){
Document plrDoc = new Document("_id", id);
plrDoc.append("id", (int) playerCollection.countDocuments());
plrDoc.append("uuid", eventPlayer.uuid());
plrDoc.append("name", eventPlayer.name());
plrDoc.append("name", eventPlayer.plainName());
plrDoc.append("rawName", eventPlayer.name());
plrDoc.append("rank", 0);
plrDoc.append("lastBan", lastBan);
plrDoc.append("discordid", discordid);
Expand All @@ -30,7 +35,7 @@ public static void MongoDbPlayerCreation(Player eventPlayer){
public static void MongoDbPlayerRankCheck(String uuid){
Player eventPlayer = Groups.player.find(p -> p.uuid().contains(uuid));
Document user = playerCollection.find(Filters.eq("uuid", uuid)).first();
String tempName = user.getString("name");
String tempName = user.getString("rawName");
int rank = user.getInteger("rank");
switch (rank){
case 0 ->{
Expand All @@ -47,4 +52,14 @@ public static void MongoDbPlayerRankCheck(String uuid){
}
}
}
public static void MongoDbPlayerNameCheck(Player player){
Document user = getDoc(player.uuid());
if (player.plainName() != user.getString("name") && player.name() != user.getString("rawName")){
Bson updates = Updates.combine(
Updates.set("name", player.plainName()),
Updates.set("rawName", player.name())
);
playerCollection.updateOne(user, updates, new UpdateOptions().upsert(true));
}
}
}
12 changes: 9 additions & 3 deletions src/main/java/plugin/utils/FindDocument.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,19 @@
import com.mongodb.client.model.Filters;
import org.bson.Document;

import java.util.regex.Pattern;

import static arc.util.Strings.stripColors;
import static com.mongodb.client.model.Filters.eq;
import static plugin.Ploogin.playerCollection;
import static plugin.utils.Utilities.notNullElse;

public class FindDocument {
public static Document getDoc(int id){
return playerCollection.find(Filters.eq("id", id)).first();
return playerCollection.find(eq("id", id)).first();
}
public static Document getDoc(String uuid){
return playerCollection.find(Filters.eq("uuid", uuid)).first();
public static Document getDoc(String uuidOrName){
Pattern pattern = Pattern.compile(".?" +uuidOrName + ".?", Pattern.CASE_INSENSITIVE);
return notNullElse(playerCollection.find(Filters.eq("uuid", uuidOrName)).first(), playerCollection.find(Filters.regex("name", pattern)).first());
}
}

0 comments on commit 9cdaf66

Please sign in to comment.