use of lavalink.client.io.LavalinkSocket in project FredBoat by Frederikam.
the class GetNodeCommand method onInvoke.
@Override
public void onInvoke(@Nonnull CommandContext context) {
if (Launcher.getBotController().getAudioConnectionFacade().isLocal()) {
context.replyWithName("Lavalink is not enabled.");
return;
}
Guild guild = null;
if (context.hasArguments()) {
try {
long guildId = Long.parseUnsignedLong(context.args[0]);
guild = Launcher.getBotController().getJdaEntityProvider().getGuildById(guildId);
} catch (NumberFormatException ignored) {
}
if (guild == null) {
context.reply("Guild not found for id " + context.args[0]);
return;
}
} else {
guild = context.guild;
}
LavalinkSocket node = Launcher.getBotController().getAudioConnectionFacade().getLavalink().getLink(guild).getNode();
String reply = String.format("Guild %s id `%s` lavalink socket: `%s`", context.guild.getName(), context.guild.getIdLong(), String.valueOf(node));
// sensitive info, send it by DM
context.replyPrivate(reply, __ -> context.replyWithName("Sent you a DM with the data."), t -> context.replyWithName("Could not DM you, adjust your privacy settings."));
}
use of lavalink.client.io.LavalinkSocket in project FredBoat by Frederikam.
the class NodeAdminCommand method list.
private void list(@Nonnull CommandContext context) {
Lavalink lavalink = Launcher.getBotController().getAudioConnectionFacade().getLavalink();
boolean showHosts = false;
if (context.hasArguments() && context.rawArgs.contains("host")) {
if (PermsUtil.checkPermsWithFeedback(PermissionLevel.BOT_ADMIN, context)) {
showHosts = true;
} else {
return;
}
}
List<LavalinkSocket> nodes = lavalink.getNodes();
if (nodes.isEmpty()) {
context.replyWithName("There are no remote lavalink nodes registered.");
return;
}
List<String> messages = new ArrayList<>();
for (LavalinkSocket socket : nodes) {
RemoteStats stats = socket.getStats();
String str = "Name: " + socket.getName() + "\n";
if (showHosts) {
str += "Host: " + socket.getRemoteUri() + "\n";
}
if (stats == null) {
str += "No stats have been received from this node! Is the node down?";
str += "\n\n";
messages.add(str);
continue;
}
str += "Playing players: " + stats.getPlayingPlayers() + "\n";
str += "Lavalink load: " + TextUtils.formatPercent(stats.getLavalinkLoad()) + "\n";
str += "System load: " + TextUtils.formatPercent(stats.getSystemLoad()) + " \n";
str += "Memory: " + stats.getMemUsed() / 1000000 + "MB/" + stats.getMemReservable() / 1000000 + "MB\n";
str += "---------------\n";
str += "Average frames sent: " + stats.getAvgFramesSentPerMinute() + "\n";
str += "Average frames nulled: " + stats.getAvgFramesNulledPerMinute() + "\n";
str += "Average frames deficit: " + stats.getAvgFramesDeficitPerMinute() + "\n";
str += "---------------\n";
LavalinkLoadBalancer.Penalties penalties = LavalinkLoadBalancer.getPenalties(socket);
str += "Penalties Total: " + penalties.getTotal() + "\n";
str += "Player Penalty: " + penalties.getPlayerPenalty() + "\n";
str += "CPU Penalty: " + penalties.getCpuPenalty() + "\n";
str += "Deficit Frame Penalty: " + penalties.getDeficitFramePenalty() + "\n";
str += "Null Frame Penalty: " + penalties.getNullFramePenalty() + "\n";
str += "Raw: " + penalties.toString() + "\n";
str += "---------------\n\n";
messages.add(str);
}
if (showHosts) {
for (String str : messages) {
context.replyPrivate(TextUtils.asCodeBlock(str), null, null);
}
context.replyWithName("Sent you a DM with the data. If you did not receive anything, adjust your privacy settings so I can DM you.");
} else {
for (String str : messages) {
context.reply(TextUtils.asCodeBlock(str));
}
}
}
use of lavalink.client.io.LavalinkSocket in project FredBoat by Frederikam.
the class NodeAdminCommand method remove.
private void remove(@Nonnull CommandContext context) {
String name = context.args[1];
List<LavalinkSocket> nodes = Launcher.getBotController().getAudioConnectionFacade().getLavalink().getNodes();
int key = -1;
for (int i = 0; i < nodes.size(); i++) {
LavalinkSocket node = nodes.get(i);
if (node.getName().equals(name)) {
key = i;
}
}
if (key < 0) {
context.reply("No node with name " + name + " found.");
return;
}
Launcher.getBotController().getAudioConnectionFacade().getLavalink().removeNode(key);
context.reply("Removed node " + name);
}
use of lavalink.client.io.LavalinkSocket in project FredBoat by Frederikam.
the class NodeAdminCommand method show.
private void show(@Nonnull CommandContext context) {
String name = context.args[1];
List<LavalinkSocket> nodes = Launcher.getBotController().getAudioConnectionFacade().getLavalink().getNodes().stream().filter(ll -> ll.getName().equals(name)).collect(Collectors.toList());
if (nodes.isEmpty()) {
context.reply("No such node: " + name + ", showing a list of all nodes instead");
list(context);
return;
}
RemoteStats stats = nodes.get(0).getStats();
String out = "No stats have been received from this node! Is the node down?";
if (stats != null) {
out = TextUtils.asCodeBlock(stats.getAsJson().toString(4), "json");
}
context.reply(out);
}
Aggregations