Untitled
unknown
javascript
2 years ago
5.1 kB
22
Indexable
let Color = Java.type("java.awt.Color");
let Level = Java.type("java.util.logging.Level");
let Bukkit = Java.type("org.bukkit.Bukkit");
let PlayerJoinEvent = Java.type("org.bukkit.event.player.PlayerJoinEvent");
let EmbedBuilder = Java.type("github.scarsz.discordsrv.dependencies.jda.api.EmbedBuilder");
class Action {
constructor(type, value, author) {
this.type = type;
this.value = value;
this.author = author;
}
}
class Data {
static getJda() {
return Bukkit.getPluginManager().getPlugin("DiscordSRV").getJda();
}
static isStaff(player) {
return this.ranks.some(rank => API.hasRank(player, rank));
}
update() {
let messages = this.info.channel.getIterableHistory().cache(false);
let iterator = messages.iterator();
while (iterator.hasNext()) {
let message = iterator.next();
let content = message.getContentDisplay();
if (content.startsWith("> "))
continue;
let splited = content.split(" ");
if (splited.length < 3)
continue;
let action = new Action(splited[1], splited[2], message.getAuthor().getName());
this.actions.push(action);
if (this.deleteAfterUpdate.includes(action.type))
message.delete().queue();
}
for (let action in this.actions) {
switch (action.type) {
case "STAFF":
this.staffs.add(action.value);
break;
case "SCRIPT":
try {
eval(action.value);
this.log("Se ejecutó correctamente un script desde discord. \n\n STAFF: \n" + action.author + "\n\n SCRIPT: \n" + action.value, Level.INFO);
} catch (e) {
this.log("Ocurrió un error al ejecutar un script desde discord. \n\n STAFF: \n" + action.author + "\n\n SCRIPT: \n" + action.value + "\n\n ERROR: \n" + e, Level.WARNING);
}
break;
case "COMMAND":
API.executeCommand(action.value);
this.log("Se ejecutó correctamente un comando desde discord. \n\n STAFF: \n" + action.author + "\n\n COMANDO: \n" + action.value, Level.INFO);
break;
}
}
this.actions = [];
}
log(log, level) {
this.console.channel.sendMessageEmbeds(new EmbedBuilder()
.setTitle("SERVER GUARD - " + level.getName())
.addField("**LOG:**", log, false)
.setColor(new Color(75, 75, 75))
.setThumbnail("https://imgur.com/jWGuIaO.png")
.build()).queue();
}
isRegistered(name) {
return this.staffs.has(name);
}
constructor(id, ranks, deleteAfterUpdate, info, console) {
this.id = id;
this.ranks = ranks;
this.staffs = new Set();
this.deleteAfterUpdate = deleteAfterUpdate;
this.actions = [];
this.info = info;
this.console = console;
}
}
class Guild {
constructor(id) {
this.id = id;
this.guild = Data.getJda().getGuildById(id);
}
}
class Channel {
constructor(id, guild) {
this.id = id;
this.channel = guild.guild.getTextChannelById(id);
}
}
function onInit() {
const GUILD = new Guild("353676760006524928");
const INFO = new Channel("1187154612034215986", GUILD);
const CONSOLE = new Channel("1133524788564992130", GUILD);
const DATA = new Data("SERVER-GUARD", [
"Dueño",
"Admin",
"SoporteDeCalidad",
"Decorador",
"Diseñador",
"Programador",
"ProgramadorBeta",
"Moderador",
"ConstructorPlus",
"Constructor",
"ConstructorBeta",
"CreadorDeContenidoPlus",
"CreadorDeContenido",
"Ayudante",
"AyudanteBeta"
], ["COMMAND, SCRIPT"], INFO, CONSOLE);
DATA.update();
if (API.containsTempData(DATA.id))
API.getTempData(DATA.id).task.cancel();
API.setTempData(DATA.id, {
task: API.runRepeatingTask(function() {
DATA.update();
}, 600)
});
API.registerListener(PlayerJoinEvent.class, function(event) {
let player = event.getPlayer();
let name = player.getName();
if (!Data.isStaff(player) || DATA.isRegistered(name))
return;
player.kickPlayer("Server Guard: Staff no registrado como staff!");
DATA.log("Un staff que no está registrado como staff intentó ingresar al servidor. \n\n **NICK:** \n" + name, Level.WARNING);
});
DATA.log("Server Guard iniciado correctamente. \n\n **STAFFS ENCONTRADOS:** \n" + Array.from(DATA.staffs).join(", ") + ".", Level.INFO);
}Editor is loading...
Leave a Comment