Deleted old commands
This commit is contained in:
parent
c045aba112
commit
130d8b027a
|
|
@ -1,7 +1,6 @@
|
||||||
package com.alttd.proxydiscordlink.bot;
|
package com.alttd.proxydiscordlink.bot;
|
||||||
|
|
||||||
import com.alttd.proxydiscordlink.bot.commandManager.CommandManager;
|
import com.alttd.proxydiscordlink.bot.commandManager.CommandManager;
|
||||||
import com.alttd.proxydiscordlink.bot.listeners.DiscordMessageListener;
|
|
||||||
import com.alttd.proxydiscordlink.bot.listeners.DiscordRoleListener;
|
import com.alttd.proxydiscordlink.bot.listeners.DiscordRoleListener;
|
||||||
import com.alttd.proxydiscordlink.config.BotConfig;
|
import com.alttd.proxydiscordlink.config.BotConfig;
|
||||||
import com.alttd.proxydiscordlink.util.ALogger;
|
import com.alttd.proxydiscordlink.util.ALogger;
|
||||||
|
|
@ -19,7 +18,6 @@ import net.dv8tion.jda.api.requests.GatewayIntent;
|
||||||
import net.dv8tion.jda.api.utils.MemberCachePolicy;
|
import net.dv8tion.jda.api.utils.MemberCachePolicy;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import javax.security.auth.login.LoginException;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
|
@ -35,7 +33,7 @@ public class Bot {
|
||||||
.enableIntents(GatewayIntent.GUILD_MEMBERS)
|
.enableIntents(GatewayIntent.GUILD_MEMBERS)
|
||||||
.build();
|
.build();
|
||||||
jda.setAutoReconnect(true);
|
jda.setAutoReconnect(true);
|
||||||
jda.addEventListener(new DiscordMessageListener(),
|
jda.addEventListener(
|
||||||
new DiscordRoleListener());
|
new DiscordRoleListener());
|
||||||
DiscordCommand.loadCommands();
|
DiscordCommand.loadCommands();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
||||||
package com.alttd.proxydiscordlink.bot.commands;
|
|
||||||
|
|
||||||
import com.alttd.proxydiscordlink.DiscordLink;
|
|
||||||
import com.alttd.proxydiscordlink.bot.Bot;
|
|
||||||
import com.alttd.proxydiscordlink.bot.DiscordCommand;
|
|
||||||
import com.alttd.proxydiscordlink.config.BotConfig;
|
|
||||||
import com.alttd.proxydiscordlink.util.Utilities;
|
|
||||||
import net.dv8tion.jda.api.entities.Message;
|
|
||||||
|
|
||||||
public class DiscordBroadCast extends DiscordCommand {
|
|
||||||
|
|
||||||
private DiscordLink plugin;
|
|
||||||
private final Bot bot;
|
|
||||||
|
|
||||||
public DiscordBroadCast() {
|
|
||||||
plugin = DiscordLink.getPlugin();
|
|
||||||
bot = plugin.getBot();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getCommand() {
|
|
||||||
return "broadcast";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getPermission() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getDescription() {
|
|
||||||
return "Broadcast a message to all online players";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getSyntax() {
|
|
||||||
return "broadcast";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getChannel() {
|
|
||||||
return BotConfig.STAFF_COMMAND_CHANNEL;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void handleCommand(Message message, String sender, String command, String[] args) {
|
|
||||||
//TODO also send this to the bot channel, optional command args for color and decoration?
|
|
||||||
String msg = String.join(" ", args);
|
|
||||||
bot.sendMessageToDiscord(BotConfig.COMMAND_CHANNEL, msg);
|
|
||||||
Utilities.broadcast(msg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,138 +0,0 @@
|
||||||
package com.alttd.proxydiscordlink.bot.commands;
|
|
||||||
|
|
||||||
import com.alttd.proxydiscordlink.DiscordLink;
|
|
||||||
import com.alttd.proxydiscordlink.bot.DiscordCommand;
|
|
||||||
import com.alttd.proxydiscordlink.bot.objects.DiscordRole;
|
|
||||||
import com.alttd.proxydiscordlink.config.BotConfig;
|
|
||||||
import com.alttd.proxydiscordlink.config.Config;
|
|
||||||
import com.alttd.proxydiscordlink.objects.DiscordLinkPlayer;
|
|
||||||
import com.alttd.proxydiscordlink.util.Utilities;
|
|
||||||
import com.velocitypowered.api.proxy.Player;
|
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
|
||||||
import net.dv8tion.jda.api.entities.Message;
|
|
||||||
import net.dv8tion.jda.api.entities.TextChannel;
|
|
||||||
import net.dv8tion.jda.api.exceptions.HierarchyException;
|
|
||||||
import net.luckperms.api.model.user.User;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
public class DiscordLinkCommand extends DiscordCommand {
|
|
||||||
@Override
|
|
||||||
public String getCommand() {
|
|
||||||
return "link";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getPermission() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getDescription() {
|
|
||||||
return "Link your Minecraft and Discord accounts.";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getSyntax() {
|
|
||||||
return "link <code>";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getChannel() {
|
|
||||||
return BotConfig.LINK_CHANNEL;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void handleCommand(Message message, String sender, String command, String[] args) {
|
|
||||||
Member member = message.getMember();
|
|
||||||
if (member == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
UUID uuid;
|
|
||||||
if ((uuid = getUUID(message.getTextChannel(), args.length == 1 ? args[0] : "")) == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
List<DiscordRole> discordRoles = Utilities.getDiscordRolesForUser(uuid, member);
|
|
||||||
|
|
||||||
DiscordLinkPlayer discordLinkPlayer = new DiscordLinkPlayer(
|
|
||||||
member.getIdLong(),
|
|
||||||
uuid,
|
|
||||||
getUsername(uuid),
|
|
||||||
member.getUser().getName(),
|
|
||||||
false,
|
|
||||||
true,
|
|
||||||
discordRoles.stream()
|
|
||||||
.map(DiscordRole::getInternalName)
|
|
||||||
.collect(Collectors.toList()));
|
|
||||||
|
|
||||||
linkAccount(discordLinkPlayer, message);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void linkAccount(DiscordLinkPlayer discordLinkPlayer, Message message) {
|
|
||||||
discordLinkPlayer.updateDiscord(
|
|
||||||
DiscordRole.getDiscordRoles().stream()
|
|
||||||
.filter(role -> discordLinkPlayer.getRoles().contains(role.getInternalName()))
|
|
||||||
.collect(Collectors.toList()),
|
|
||||||
true);
|
|
||||||
discordLinkPlayer.updateMinecraft(
|
|
||||||
DiscordRole.getDiscordRoles().stream()
|
|
||||||
.filter(role -> discordLinkPlayer.getRoles().contains(role.getInternalName()))
|
|
||||||
.collect(Collectors.toList()),
|
|
||||||
true);
|
|
||||||
|
|
||||||
discordLinkPlayer.linkedRole(true);
|
|
||||||
Player player = DiscordLink.getPlugin().getProxy().getPlayer(discordLinkPlayer.getUuid()).orElse(null);
|
|
||||||
User user = Utilities.getLuckPerms().getUserManager().getUser(discordLinkPlayer.getUuid());
|
|
||||||
if (player != null || user != null)
|
|
||||||
DiscordLink.getPlugin().getBot().changeNick(
|
|
||||||
message.getGuild().getIdLong(),
|
|
||||||
message.getMember().getIdLong(),
|
|
||||||
player == null ?
|
|
||||||
user.getUsername() :
|
|
||||||
player.getUsername());
|
|
||||||
else
|
|
||||||
DiscordLink.getPlugin().getBot().changeNick(
|
|
||||||
message.getGuild().getIdLong(),
|
|
||||||
message.getMember().getIdLong(),
|
|
||||||
discordLinkPlayer.getUsername());
|
|
||||||
|
|
||||||
message.getChannel().sendMessage("You have successfully linked " +
|
|
||||||
discordLinkPlayer.getUsername() + " with " +
|
|
||||||
discordLinkPlayer.getDiscordUsername() + "!")
|
|
||||||
.queue(message1 -> message1.delete().queueAfter(5, TimeUnit.SECONDS));
|
|
||||||
|
|
||||||
DiscordLinkPlayer.addDiscordLinkPlayer(discordLinkPlayer);
|
|
||||||
DiscordLink.getPlugin().getDatabase().syncPlayer(discordLinkPlayer);
|
|
||||||
DiscordLink.getPlugin().getDatabase().syncRoles(discordLinkPlayer);
|
|
||||||
DiscordLink.getPlugin().getCache().removeCachedPlayer(discordLinkPlayer.getUuid());
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getUsername(UUID uuid) {
|
|
||||||
Optional<Player> player = DiscordLink.getPlugin().getProxy().getPlayer(uuid);
|
|
||||||
if (player.isPresent())
|
|
||||||
return player.get().getUsername();
|
|
||||||
|
|
||||||
User user = Utilities.getLuckPerms().getUserManager().getUser(uuid);
|
|
||||||
if (user != null)
|
|
||||||
return user.getUsername();
|
|
||||||
|
|
||||||
return "No User";
|
|
||||||
}
|
|
||||||
|
|
||||||
private UUID getUUID(TextChannel channel, String code) {
|
|
||||||
UUID uuid;
|
|
||||||
if (code.matches("[0-9]{6}")) {
|
|
||||||
if ((uuid = DiscordLink.getPlugin().getCache().getUUID(code)) != null)
|
|
||||||
return uuid;
|
|
||||||
}
|
|
||||||
|
|
||||||
channel.sendMessage("Please use `&link ######` where the #'s are the code you received in-game.")
|
|
||||||
.queue(message1 -> message1.delete().queueAfter(15, TimeUnit.SECONDS, null, error -> {
|
|
||||||
}));
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,75 +0,0 @@
|
||||||
package com.alttd.proxydiscordlink.bot.commands;
|
|
||||||
|
|
||||||
import com.alttd.proxydiscordlink.DiscordLink;
|
|
||||||
import com.alttd.proxydiscordlink.bot.DiscordCommand;
|
|
||||||
import com.alttd.proxydiscordlink.config.BotConfig;
|
|
||||||
import com.alttd.proxydiscordlink.objects.DiscordLinkPlayer;
|
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
|
||||||
import net.dv8tion.jda.api.entities.Message;
|
|
||||||
import net.dv8tion.jda.api.entities.MessageChannel;
|
|
||||||
|
|
||||||
public class DiscordNick extends DiscordCommand {
|
|
||||||
@Override
|
|
||||||
public String getCommand() {
|
|
||||||
return "nick";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getPermission() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getDescription() {
|
|
||||||
return "Change your name between your Minecraft username and Minecraft nickname.";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getSyntax() {
|
|
||||||
return "nick <username/nickname>";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getChannel() {
|
|
||||||
return BotConfig.COMMAND_CHANNEL;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void handleCommand(Message message, String sender, String command, String[] args) {
|
|
||||||
MessageChannel channel = message.getChannel();
|
|
||||||
if (args.length != 1) {
|
|
||||||
channel.sendMessage("The correct syntax is: `" +
|
|
||||||
BotConfig.prefixMap.get(message.getGuild().getIdLong()) +
|
|
||||||
getSyntax() + "`.").queue();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Member member = message.getMember();
|
|
||||||
DiscordLinkPlayer discordLinkPlayer = DiscordLinkPlayer.getDiscordLinkPlayer(member.getIdLong());
|
|
||||||
if (discordLinkPlayer == null) {
|
|
||||||
channel.sendMessage("You aren't linked, please link before using this command.").queue();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (args[0].toLowerCase()) {
|
|
||||||
case "username" -> {
|
|
||||||
member.modifyNickname(discordLinkPlayer.getUsername()).queue();
|
|
||||||
channel.sendMessage("Your nickname has been set to `" + discordLinkPlayer.getUsername() + "`.").queue();
|
|
||||||
discordLinkPlayer.setNick(false);
|
|
||||||
DiscordLink.getPlugin().getDatabase().syncPlayer(discordLinkPlayer);
|
|
||||||
}
|
|
||||||
case "nickname" -> {
|
|
||||||
String nick = DiscordLink.getPlugin().getDatabase().getNick(discordLinkPlayer.getUuid());
|
|
||||||
if (nick == null || nick.isBlank())
|
|
||||||
nick = discordLinkPlayer.getUsername();
|
|
||||||
member.modifyNickname(nick).queue();
|
|
||||||
channel.sendMessage("Your nickname has been set to `" + nick + "`.").queue();
|
|
||||||
discordLinkPlayer.setNick(true);
|
|
||||||
DiscordLink.getPlugin().getDatabase().syncPlayer(discordLinkPlayer);
|
|
||||||
}
|
|
||||||
default -> channel.sendMessage("The correct syntax is: `" +
|
|
||||||
BotConfig.prefixMap.get(message.getGuild().getIdLong()) +
|
|
||||||
getSyntax() + "`.").queue();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,138 +0,0 @@
|
||||||
package com.alttd.proxydiscordlink.bot.commands;
|
|
||||||
|
|
||||||
import com.alttd.proxydiscordlink.DiscordLink;
|
|
||||||
import com.alttd.proxydiscordlink.bot.Bot;
|
|
||||||
import com.alttd.proxydiscordlink.bot.DiscordCommand;
|
|
||||||
import com.alttd.proxydiscordlink.config.BotConfig;
|
|
||||||
import com.alttd.proxydiscordlink.util.Utilities;
|
|
||||||
import com.velocitypowered.api.proxy.Player;
|
|
||||||
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
|
||||||
import com.velocitypowered.api.proxy.server.ServerInfo;
|
|
||||||
import net.dv8tion.jda.api.EmbedBuilder;
|
|
||||||
import net.dv8tion.jda.api.entities.Message;
|
|
||||||
import net.luckperms.api.LuckPerms;
|
|
||||||
import net.luckperms.api.model.user.User;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
public class DiscordServerList extends DiscordCommand {
|
|
||||||
|
|
||||||
private DiscordLink plugin;
|
|
||||||
private final Bot bot;
|
|
||||||
|
|
||||||
public DiscordServerList() {
|
|
||||||
plugin = DiscordLink.getPlugin();
|
|
||||||
bot = plugin.getBot();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getCommand() {
|
|
||||||
return "serverlist";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getPermission() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getDescription() {
|
|
||||||
return "Lists all online players on the server or a specific server";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getSyntax() {
|
|
||||||
return "serverlist";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getChannel() {
|
|
||||||
return BotConfig.STAFF_COMMAND_CHANNEL;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void handleCommand(Message message, String sender, String command, String[] args) {
|
|
||||||
String serverName = "Altitude";
|
|
||||||
Collection<Player> onlinePlayer = plugin.getProxy().getAllPlayers();
|
|
||||||
ServerInfo server;
|
|
||||||
if (args.length != 0) {
|
|
||||||
Optional<RegisteredServer> registeredServer = plugin.getProxy().getServer(args[0]);
|
|
||||||
if (registeredServer.isEmpty()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
onlinePlayer = registeredServer.get().getPlayersConnected();
|
|
||||||
serverName = registeredServer.get().getServerInfo().getName();
|
|
||||||
}
|
|
||||||
LuckPerms luckPerms = Utilities.getLuckPerms();
|
|
||||||
List<User> players = onlinePlayer
|
|
||||||
.stream()
|
|
||||||
.map(player -> luckPerms.getUserManager().getUser(player.getUniqueId()))
|
|
||||||
.sorted((o1, o2) -> {
|
|
||||||
int i = Integer.compare(luckPerms.getGroupManager().getGroup(o2.getPrimaryGroup()).getWeight().orElse(0), luckPerms.getGroupManager().getGroup(o1.getPrimaryGroup()).getWeight().orElse(0));
|
|
||||||
return i != 0 ? i : o1.getUsername().compareToIgnoreCase(o2.getUsername());
|
|
||||||
})
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
EmbedBuilder embedBuilder = new EmbedBuilder();
|
|
||||||
String title = "Players online on " + serverName + ": " + players.size();
|
|
||||||
embedBuilder.setTitle(title);
|
|
||||||
String separator = "\n";
|
|
||||||
String rankname = "";
|
|
||||||
StringBuilder currentFieldText = new StringBuilder();
|
|
||||||
int entryCounter = 0;
|
|
||||||
int totalCharacters = title.length();
|
|
||||||
int fieldCounter = 0;
|
|
||||||
|
|
||||||
Iterator<User> iterator = players.iterator();
|
|
||||||
while (iterator.hasNext()) {
|
|
||||||
User user = iterator.next();
|
|
||||||
if(user != null) {
|
|
||||||
if(!rankname.equalsIgnoreCase(user.getPrimaryGroup())) {
|
|
||||||
if (currentFieldText.length() != 0) {
|
|
||||||
totalCharacters += rankname.length() + currentFieldText.length();
|
|
||||||
fieldCounter++;
|
|
||||||
if (totalCharacters > 6000 || fieldCounter > 25) {
|
|
||||||
bot.sendEmbedToDiscord(getChannel(), embedBuilder, 300);
|
|
||||||
embedBuilder.clearFields();
|
|
||||||
totalCharacters = title.length() + rankname.length() + currentFieldText.length();
|
|
||||||
fieldCounter = 1;
|
|
||||||
}
|
|
||||||
embedBuilder.addField(rankname, currentFieldText.toString(), true);
|
|
||||||
entryCounter = 0;
|
|
||||||
currentFieldText = new StringBuilder();
|
|
||||||
}
|
|
||||||
rankname = Utilities.capitalize(user.getPrimaryGroup());
|
|
||||||
} else if(rankname.equalsIgnoreCase(user.getPrimaryGroup())) {
|
|
||||||
currentFieldText.append(separator);
|
|
||||||
}
|
|
||||||
if (entryCounter <= 50) {
|
|
||||||
Optional<Player> optionalPlayer = plugin.getProxy().getPlayer(user.getUniqueId());
|
|
||||||
if(optionalPlayer.isPresent()) {
|
|
||||||
Player player = optionalPlayer.get();
|
|
||||||
currentFieldText.append("`").append(player.getUsername()).append("`");
|
|
||||||
}
|
|
||||||
} else if (entryCounter == 51){
|
|
||||||
currentFieldText.append("...");
|
|
||||||
}
|
|
||||||
entryCounter++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (currentFieldText.length() > 0) {
|
|
||||||
totalCharacters = title.length() + rankname.length() + currentFieldText.length();
|
|
||||||
fieldCounter++;
|
|
||||||
if (totalCharacters > 6000 || fieldCounter > 25) {
|
|
||||||
bot.sendEmbedToDiscord(getChannel(), embedBuilder, 300);
|
|
||||||
embedBuilder.clearFields();
|
|
||||||
}
|
|
||||||
embedBuilder.addField(rankname, currentFieldText.toString(), true);
|
|
||||||
}
|
|
||||||
|
|
||||||
message.delete().queueAfter(300, TimeUnit.SECONDS);
|
|
||||||
bot.sendEmbedToDiscord(getChannel(), embedBuilder, 300);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,152 +0,0 @@
|
||||||
package com.alttd.proxydiscordlink.bot.commands;
|
|
||||||
|
|
||||||
import com.alttd.proxydiscordlink.DiscordLink;
|
|
||||||
import com.alttd.proxydiscordlink.bot.Bot;
|
|
||||||
import com.alttd.proxydiscordlink.bot.DiscordCommand;
|
|
||||||
import com.alttd.proxydiscordlink.config.BotConfig;
|
|
||||||
import com.alttd.proxydiscordlink.util.Utilities;
|
|
||||||
import com.velocitypowered.api.proxy.Player;
|
|
||||||
import net.dv8tion.jda.api.EmbedBuilder;
|
|
||||||
import net.dv8tion.jda.api.entities.Message;
|
|
||||||
import net.luckperms.api.LuckPerms;
|
|
||||||
import net.luckperms.api.model.user.User;
|
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
public class DiscordStaffList extends DiscordCommand {
|
|
||||||
|
|
||||||
private DiscordLink plugin;
|
|
||||||
private final Bot bot;
|
|
||||||
|
|
||||||
public DiscordStaffList() {
|
|
||||||
plugin = DiscordLink.getPlugin();
|
|
||||||
bot = plugin.getBot();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getCommand() {
|
|
||||||
return "stafflist";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getPermission() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getDescription() {
|
|
||||||
return "Lists all online staff on the server";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getSyntax() {
|
|
||||||
return "staffList";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getChannel() {
|
|
||||||
return BotConfig.STAFF_COMMAND_CHANNEL;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void handleCommand(Message message, String sender, String command, String[] args) {
|
|
||||||
LuckPerms luckPerms = Utilities.getLuckPerms();
|
|
||||||
List<User> staff = plugin.getProxy().getAllPlayers()
|
|
||||||
.stream().filter(player-> player.hasPermission("group." + BotConfig.SL_MINIMUMRANK))
|
|
||||||
.map(player -> luckPerms.getUserManager().getUser(player.getUniqueId()))
|
|
||||||
.sorted((o1, o2) -> {
|
|
||||||
int i = Integer.compare(luckPerms.getGroupManager().getGroup(o2.getPrimaryGroup()).getWeight().orElse(0), luckPerms.getGroupManager().getGroup(o1.getPrimaryGroup()).getWeight().orElse(0));
|
|
||||||
return i != 0 ? i : o1.getUsername().compareToIgnoreCase(o2.getUsername());
|
|
||||||
})
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
EmbedBuilder embedBuilder = new EmbedBuilder();
|
|
||||||
String title = "Online Staff: " + staff.size() + " - Online Players: " + plugin.getProxy().getAllPlayers().size();
|
|
||||||
embedBuilder.setTitle(title);
|
|
||||||
String separator = "\n";
|
|
||||||
String rankname = "";
|
|
||||||
|
|
||||||
Map<String, Integer> onlineStaff = new HashMap<>();
|
|
||||||
StringBuilder currentFieldText = new StringBuilder();
|
|
||||||
int entryCounter = 0;
|
|
||||||
int totalCharacters = title.length();
|
|
||||||
int fieldCounter = 0;
|
|
||||||
|
|
||||||
Iterator<User> iterator = staff.iterator();
|
|
||||||
while (iterator.hasNext()) {
|
|
||||||
User user = iterator.next();
|
|
||||||
if(user != null) {
|
|
||||||
if(!rankname.equalsIgnoreCase(user.getPrimaryGroup())) {
|
|
||||||
if (currentFieldText.length() != 0) {
|
|
||||||
totalCharacters += rankname.length() + currentFieldText.length();
|
|
||||||
fieldCounter++;
|
|
||||||
if (totalCharacters > 6000 || fieldCounter > 25) {
|
|
||||||
bot.sendEmbedToDiscord(getChannel(), embedBuilder, -1);
|
|
||||||
embedBuilder.clearFields();
|
|
||||||
totalCharacters = title.length() + rankname.length() + currentFieldText.length();
|
|
||||||
fieldCounter = 1;
|
|
||||||
}
|
|
||||||
embedBuilder.addField(rankname, currentFieldText.toString(), true);
|
|
||||||
entryCounter = 0;
|
|
||||||
currentFieldText = new StringBuilder();
|
|
||||||
}
|
|
||||||
rankname = Utilities.capitalize(user.getPrimaryGroup());
|
|
||||||
} else if(rankname.equalsIgnoreCase(user.getPrimaryGroup())) {
|
|
||||||
currentFieldText.append(separator);
|
|
||||||
}
|
|
||||||
|
|
||||||
Optional<Player> optionalPlayer = plugin.getProxy().getPlayer(user.getUniqueId());
|
|
||||||
if(optionalPlayer.isPresent()) {
|
|
||||||
Player player = optionalPlayer.get();
|
|
||||||
String currentServerName = player.getCurrentServer().isPresent() ? player.getCurrentServer().get().getServerInfo().getName() : "";
|
|
||||||
if (onlineStaff.containsKey(currentServerName)){
|
|
||||||
onlineStaff.put(currentServerName, onlineStaff.get(currentServerName) + 1);
|
|
||||||
} else {
|
|
||||||
onlineStaff.put(currentServerName, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (entryCounter <= 50) {
|
|
||||||
currentFieldText.append("`").append(player.getUsername()).append("`");
|
|
||||||
} else if (entryCounter == 51){
|
|
||||||
currentFieldText.append("...");
|
|
||||||
}
|
|
||||||
entryCounter++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (currentFieldText.length() > 0) {
|
|
||||||
totalCharacters = title.length() + rankname.length() + currentFieldText.length();
|
|
||||||
fieldCounter++;
|
|
||||||
if (totalCharacters > 6000 || fieldCounter > 25) {
|
|
||||||
bot.sendEmbedToDiscord(getChannel(), embedBuilder, -1);
|
|
||||||
embedBuilder.clearFields();
|
|
||||||
}
|
|
||||||
embedBuilder.addField(rankname, currentFieldText.toString(), true);
|
|
||||||
currentFieldText = new StringBuilder();
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Map.Entry<String, Integer> entry : onlineStaff.entrySet()){
|
|
||||||
String serverName = entry.getKey();
|
|
||||||
Integer amountOfStaff = entry.getValue();
|
|
||||||
// this might error:/
|
|
||||||
int playerCount = plugin.getProxy().getServer(serverName).isPresent() ? plugin.getProxy().getServer(serverName).get().getPlayersConnected().size() - amountOfStaff : 1;
|
|
||||||
currentFieldText.append(serverName).append(" online staff per player ")
|
|
||||||
.append(amountOfStaff).append(" / ").append(Math.max(playerCount, 0)).append(" = ")
|
|
||||||
.append(playerCount > 0 ? Math.round(((double)amountOfStaff / playerCount) * 100.0) / 100.0 : "-").append("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (currentFieldText.length() > 0) {
|
|
||||||
rankname = "Staff per server";
|
|
||||||
totalCharacters = title.length() + rankname.length() + currentFieldText.length();
|
|
||||||
fieldCounter++;
|
|
||||||
if (totalCharacters > 6000 || fieldCounter > 25) {
|
|
||||||
bot.sendEmbedToDiscord(getChannel(), embedBuilder, -1);
|
|
||||||
embedBuilder.clearFields();
|
|
||||||
}
|
|
||||||
embedBuilder.addField(rankname, currentFieldText.toString(), true);
|
|
||||||
}
|
|
||||||
|
|
||||||
bot.sendEmbedToDiscord(getChannel(), embedBuilder, -1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
package com.alttd.proxydiscordlink.bot.commands;
|
|
||||||
|
|
||||||
import com.alttd.proxydiscordlink.bot.DiscordCommand;
|
|
||||||
import com.alttd.proxydiscordlink.config.BotConfig;
|
|
||||||
import com.alttd.proxydiscordlink.objects.DiscordLinkPlayer;
|
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
|
||||||
import net.dv8tion.jda.api.entities.Message;
|
|
||||||
|
|
||||||
public class DiscordUnlink extends DiscordCommand {
|
|
||||||
@Override
|
|
||||||
public String getCommand() {
|
|
||||||
return "unlink";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getPermission() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getDescription() {
|
|
||||||
return "Unlink your Minecraft and Discord accounts.";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getSyntax() {
|
|
||||||
return "unlink";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getChannel() {
|
|
||||||
return BotConfig.LINK_CHANNEL;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void handleCommand(Message message, String sender, String command, String[] args) {
|
|
||||||
Member member = message.getMember();
|
|
||||||
if (member == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
DiscordLinkPlayer discordLinkPlayer = DiscordLinkPlayer.getDiscordLinkPlayer(member.getIdLong());
|
|
||||||
if (discordLinkPlayer == null) {
|
|
||||||
message.getChannel().sendMessage("Your accounts aren't linked.").queue();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
discordLinkPlayer.unlinkDiscordLinkPlayer();
|
|
||||||
message.getChannel().sendMessage("Your Discord and Minecraft accounts have been unlinked.").queue();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,77 +0,0 @@
|
||||||
package com.alttd.proxydiscordlink.bot.listeners;
|
|
||||||
|
|
||||||
import com.alttd.proxydiscordlink.DiscordLink;
|
|
||||||
import com.alttd.proxydiscordlink.bot.Bot;
|
|
||||||
import com.alttd.proxydiscordlink.bot.DiscordCommand;
|
|
||||||
import com.alttd.proxydiscordlink.config.BotConfig;
|
|
||||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
|
||||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
|
|
||||||
public class DiscordMessageListener extends ListenerAdapter {
|
|
||||||
|
|
||||||
private final DiscordLink plugin;
|
|
||||||
private final Bot bot;
|
|
||||||
|
|
||||||
public DiscordMessageListener() {
|
|
||||||
plugin = DiscordLink.getPlugin();
|
|
||||||
bot = plugin.getBot();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onMessageReceived(MessageReceivedEvent event) {
|
|
||||||
if (!event.isFromGuild())
|
|
||||||
return;
|
|
||||||
if (event.getAuthor() == event.getJDA().getSelfUser())
|
|
||||||
return;
|
|
||||||
if (event.isWebhookMessage())
|
|
||||||
return;
|
|
||||||
/*
|
|
||||||
if (event.getMessage().getChannel().getIdLong() == BotConfig.COMMAND_CHANNEL) {
|
|
||||||
String content = event.getMessage().getContentRaw();
|
|
||||||
if (content.startsWith(BotConfig.prefixMap.get(event.getGuild().getIdLong())) && content.length() > 1) {
|
|
||||||
String[] split = content.split(" ");
|
|
||||||
String cmd = split[0].substring(1).toLowerCase();
|
|
||||||
String[] args = Arrays.copyOfRange(split, 1, split.length);
|
|
||||||
for(DiscordCommand command : DiscordCommand.getCommands()) {
|
|
||||||
if(!command.getCommand().equalsIgnoreCase(cmd))
|
|
||||||
continue;
|
|
||||||
if(command.getPermission() != null) {
|
|
||||||
// TODO permission check? do we need this?
|
|
||||||
}
|
|
||||||
command.handleCommand(event.getMessage(), event.getAuthor().getName(), cmd, args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (event.getMessage().getChannel().getIdLong() == BotConfig.LINK_CHANNEL) {
|
|
||||||
String content = event.getMessage().getContentRaw();
|
|
||||||
String[] split = content.split(" ");
|
|
||||||
String cmd = split[0].substring(1).toLowerCase();
|
|
||||||
String[] args = Arrays.copyOfRange(split, 1, split.length);
|
|
||||||
if (cmd.equalsIgnoreCase("link"))
|
|
||||||
DiscordCommand.getCommands().stream()
|
|
||||||
.filter(discordCommand -> discordCommand.getCommand().equals("link"))
|
|
||||||
.findFirst()
|
|
||||||
.ifPresent(discordCommand -> discordCommand.handleCommand(event.getMessage(), event.getAuthor().getName(), cmd, args));
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
String content = event.getMessage().getContentRaw();
|
|
||||||
if (!BotConfig.prefixMap.containsKey(event.getGuild().getIdLong())) return; // early return
|
|
||||||
if (content.startsWith(BotConfig.prefixMap.get(event.getGuild().getIdLong())) && content.length() > 1) {
|
|
||||||
String[] split = content.split(" ");
|
|
||||||
String cmd = split[0].substring(1).toLowerCase();
|
|
||||||
String[] args = Arrays.copyOfRange(split, 1, split.length);
|
|
||||||
for (DiscordCommand command : DiscordCommand.getCommands()) {
|
|
||||||
if (!command.getCommand().equalsIgnoreCase(cmd))
|
|
||||||
continue;
|
|
||||||
if (!(event.getMessage().getChannel().getIdLong() == command.getChannel()))
|
|
||||||
continue;
|
|
||||||
if (command.getPermission() != null) {
|
|
||||||
// TODO permission check? do we need this?
|
|
||||||
}
|
|
||||||
command.handleCommand(event.getMessage(), event.getAuthor().getName(), cmd, args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -3,6 +3,7 @@ package com.alttd.proxydiscordlink.objects;
|
||||||
import com.alttd.proxydiscordlink.DiscordLink;
|
import com.alttd.proxydiscordlink.DiscordLink;
|
||||||
import com.alttd.proxydiscordlink.bot.objects.DiscordRole;
|
import com.alttd.proxydiscordlink.bot.objects.DiscordRole;
|
||||||
import com.alttd.proxydiscordlink.config.BotConfig;
|
import com.alttd.proxydiscordlink.config.BotConfig;
|
||||||
|
import com.alttd.proxydiscordlink.database.Database;
|
||||||
import com.alttd.proxydiscordlink.util.Utilities;
|
import com.alttd.proxydiscordlink.util.Utilities;
|
||||||
import net.luckperms.api.model.user.UserManager;
|
import net.luckperms.api.model.user.UserManager;
|
||||||
import net.luckperms.api.node.types.InheritanceNode;
|
import net.luckperms.api.node.types.InheritanceNode;
|
||||||
|
|
@ -130,6 +131,7 @@ public class DiscordLinkPlayer {
|
||||||
.collect(Collectors.toList()),
|
.collect(Collectors.toList()),
|
||||||
false);
|
false);
|
||||||
linkedRole(false);
|
linkedRole(false);
|
||||||
|
DiscordLink.getPlugin().getDatabase().removeLinkedAccount(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Static stuff
|
//Static stuff
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user