Update to latest alpha and make clone of track when playing next

This commit is contained in:
anthorob committed 2023-02-06 17:17:23 -05:00
1 parent 90455b90c3
commit d3683cc638
26 files changed
+79 -69

No files matched your search

@@ -5,6 +5,7 @@ import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.entities.Activity;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.exceptions.InvalidTokenException;
import net.dv8tion.jda.api.requests.GatewayIntent;
import netneutrality.core.CommandManager;
import netneutrality.core.LogHandler;
@@ -24,8 +25,6 @@ import org.apache.logging.log4j.core.config.Configurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.security.auth.login.LoginException;
public class NetNeutrality {
private static JDA jda;
@@ -68,7 +67,7 @@ public class NetNeutrality {
.setActivity(Activity.watching("me load..."))
.build();
jda.awaitReady();
} catch (LoginException | IllegalArgumentException | InterruptedException e) {
} catch (InvalidTokenException | IllegalArgumentException | InterruptedException e) {
Sentry.captureException(e);
LogHandler.log(e);
@@ -2,7 +2,7 @@ package netneutrality.command;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.MessageChannel;
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions;
import netneutrality.core.context.MessageCommandContext;
@@ -6,7 +6,11 @@ package netneutrality.command;
* https://discord.gg/CdFcyQ
*/
import net.dv8tion.jda.api.entities.*;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Role;
import net.dv8tion.jda.api.entities.channel.ChannelType;
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
import netneutrality.core.GuildManager;
import netneutrality.db.GSettings;
import netneutrality.utils.UserFunction;
@@ -8,7 +8,7 @@ package netneutrality.command;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.MessageChannel;
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions;
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData;
import netneutrality.core.context.MessageCommandContext;
@@ -6,7 +6,7 @@ package netneutrality.command.admin;
* https://discord.gg/CdFcyQ
*/
import net.dv8tion.jda.api.entities.GuildMessageChannel;
import net.dv8tion.jda.api.entities.channel.middleman.GuildMessageChannel;
import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions;
import net.dv8tion.jda.api.interactions.commands.OptionMapping;
import net.dv8tion.jda.api.interactions.commands.OptionType;
@@ -7,7 +7,7 @@ package netneutrality.command.bot;
*/
import net.dv8tion.jda.api.entities.Role;
import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
import net.dv8tion.jda.api.entities.channel.unions.GuildChannelUnion;
import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions;
import net.dv8tion.jda.api.interactions.commands.OptionMapping;
@@ -7,7 +7,7 @@ package netneutrality.command.music;
* https://discord.gg/CdFcyQ
*/
import net.dv8tion.jda.api.entities.VoiceChannel;
import net.dv8tion.jda.api.entities.channel.concrete.VoiceChannel;
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData;
import netneutrality.command.AbstractMusicCommand;
import netneutrality.core.context.MessageCommandContext;
@@ -1,11 +1,4 @@
package netneutrality.core;/*
* Copyright (c) anthorob
*
* https://xtremcommunity.com/
* https://discord.gg/CdFcyQ
*/
package netneutrality.core;
/*
* Copyright (c) anthorob
*
@@ -13,7 +6,7 @@ package netneutrality.core;/*
* https://discord.gg/CdFcyQ
*/
import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
import netneutrality.music.MusicManager;
import netneutrality.music.TrackScheduler;
import org.json.JSONArray;
@@ -9,7 +9,7 @@ package netneutrality.core;
import net.dv8tion.jda.api.entities.Guild;
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.entities.channel.concrete.TextChannel;
import netneutrality.NetNeutrality;
import netneutrality.db.DBController;
import netneutrality.db.GSettings;
@@ -84,14 +84,6 @@ public class GuildManager {
return managers;
}
public boolean isLoggingEnabled() {
return guildEntity.getLogging();
}
public boolean isDebugEnabled() {
return guildEntity.getDebug();
}
public Guild getGuild() {
return guild;
}
@@ -108,6 +100,15 @@ public class GuildManager {
return settingsCache;
}
// Methods
public boolean isLoggingEnabled() {
return guildEntity.getLogging();
}
public boolean isDebugEnabled() {
return guildEntity.getDebug();
}
public String getSetting(GSettings setting) {
String value = settingsCache.get(setting.getName());
@@ -196,7 +197,7 @@ public class GuildManager {
public void checkAndLogMessage(Message message, Member member, TextChannel channel) {
if (isLoggingEnabled()) {
ThreadManager.getExecutor("log-messages").submit(() -> DBController.get(DBMessage.class).log(this, channel, member, message));
ThreadManager.getExecutor().submit(() -> DBController.get(DBMessage.class).log(this, channel, member, message));
}
}
@@ -8,7 +8,7 @@ package netneutrality.core;
import io.sentry.Sentry;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
import netneutrality.core.context.CommandContext;
import netneutrality.exceptions.CommandException;
import netneutrality.exceptions.CommandExecutionException;
@@ -6,7 +6,11 @@ package netneutrality.core.context;/*
*/
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.*;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.MessageEmbed;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
import net.dv8tion.jda.api.events.Event;
import net.dv8tion.jda.api.utils.messages.MessageCreateData;
import netneutrality.command.AbstractCommand;
@@ -10,6 +10,7 @@ import io.sentry.Breadcrumb;
import io.sentry.Sentry;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.*;
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.utils.messages.MessageCreateData;
import netneutrality.command.AbstractCommand;
@@ -26,7 +27,7 @@ import java.util.concurrent.TimeUnit;
public class MessageCommandContext implements CommandContext {
private static final ExecutorService commandExecutor = ThreadManager.getExecutor("command-execution", ThreadManager.ExecutorType.FIXED);
private static final ExecutorService commandExecutor = ThreadManager.getExecutor();
private AbstractCommand command;
private final MessageReceivedEvent event;
@@ -7,7 +7,11 @@ package netneutrality.core.context;/*
import io.sentry.Sentry;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.*;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.MessageEmbed;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import net.dv8tion.jda.api.interactions.InteractionHook;
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder;
@@ -9,7 +9,7 @@ package netneutrality.db.controllers;
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.entities.channel.concrete.TextChannel;
import netneutrality.core.GuildManager;
import netneutrality.db.AbstractController;
import netneutrality.db.entities.OLogMessage;
@@ -7,7 +7,7 @@ package netneutrality.hooks.message;
* https://discord.gg/CdFcyQ
*/
import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
import net.dv8tion.jda.api.events.message.MessageUpdateEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import netneutrality.core.GuildManager;
@@ -11,7 +11,7 @@ import io.sentry.Sentry;
import net.dv8tion.jda.api.entities.Guild;
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.entities.channel.concrete.TextChannel;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import netneutrality.command.AbstractCommand;
@@ -15,12 +15,11 @@ import com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.entities.VoiceChannel;
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
import net.dv8tion.jda.api.entities.channel.concrete.VoiceChannel;
import netneutrality.core.GuildManager;
import netneutrality.core.LogHandler;
import netneutrality.core.context.CommandContext;
import netneutrality.core.context.SlashCommandContext;
import netneutrality.db.GSettings;
import netneutrality.exceptions.CommandExecutionException;
import netneutrality.music.loadable.LoadableSong;
@@ -155,12 +154,6 @@ public class MusicManager {
}
}
public boolean restoreQueue(List<String> track) {
//TODO: todo
return false;
}
public synchronized void play(String url, CommandContext context, boolean needToBeConnected, boolean silent) {
logger.debug("Guild {}: request to play {} by user {}", guild.getId(), url, context.getGuildUser().getId());
@@ -1,4 +1,5 @@
package netneutrality.music;/*
package netneutrality.music;
/*
* Copyright (c) anthorob
*
* https://xtremcommunity.com/
@@ -203,12 +204,7 @@ public class QueueManager {
TrackInfo next = queue.peek();
if (next != null) {
if (last != null && last.getTrack().equals(next.getTrack())) {
logger.debug("Guild {}: duplicate track in queue found, skipping to next. last={}, next={}", guild.getId(), last.getTrack().getIdentifier(), next.getTrack().getIdentifier());
startNextTrack();
} else {
player.startTrack(next.getTrack(), false);
}
player.startTrack(next.getTrack().makeClone(), false);
} else {
player.stopTrack();
}
@@ -16,6 +16,7 @@ import netneutrality.thread.ThreadManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
public class TrackLoader implements Runnable {
@@ -65,8 +66,11 @@ public class TrackLoader implements Runnable {
@Override
public void run() {
List<LoadableSong> copy = new ArrayList<>(songs);
for (LoadableSong song : songs) {
if (loadingDisabled) {
copy.remove(song);
break;
}
@@ -93,7 +97,7 @@ public class TrackLoader implements Runnable {
audioPlayerManager.loadItemOrdered(this, identifier, loadingHandler);
} else {
totalNumberOfTracks++;
copy.remove(song);
if (songs.size() == 1) {
context.replyToMessage("No source found to play the given url");
@@ -103,13 +107,13 @@ public class TrackLoader implements Runnable {
try {
synchronized (sync) {
while (!(songs.size() == totalNumberOfTracks)) {
while (!(copy.size() == totalNumberOfTracks)) {
logger.debug("waiting for load; size={}, total={}, loaded={}", songs.size(), totalNumberOfTracks, numberOfTracksLoaded);
sync.wait();
}
//TODO: logic
if (songs.size() > 1 && source != null && !loadingDisabled) {
if (copy.size() > 1 && source != null && !loadingDisabled) {
context.replyToMessage("Loaded %d of %d tracks from online source", numberOfTracksLoaded, totalNumberOfTracks);
}
}
@@ -13,7 +13,7 @@ import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
import com.sedmelluq.discord.lavaplayer.track.AudioTrackEndReason;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.MessageEmbed;
import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
import netneutrality.core.LogHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -7,7 +7,7 @@ package netneutrality.thread;/*
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.VoiceChannel;
import net.dv8tion.jda.api.entities.channel.concrete.VoiceChannel;
import netneutrality.NetNeutrality;
import netneutrality.music.MusicManager;
import org.slf4j.LoggerFactory;
@@ -10,9 +10,9 @@ import io.sentry.ISpan;
import io.sentry.ITransaction;
import io.sentry.Sentry;
import io.sentry.SpanStatus;
import net.dv8tion.jda.api.entities.GuildMessageChannel;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.MessageHistory;
import net.dv8tion.jda.api.entities.channel.middleman.GuildMessageChannel;
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder;
import netneutrality.core.context.CommandContext;
import netneutrality.thread.ThreadManager;
@@ -50,7 +50,7 @@ public class ChannelMessagePurger {
}
public void purgeMessages(CommandContext context, int toPurge) {
ThreadManager.getExecutor("bulk-delete", ThreadManager.ExecutorType.FIXED).submit(() -> {
ThreadManager.getExecutor().submit(() -> {
if (lock.tryLock()) {
try {
int total = countAllChannelMessages(channel);
@@ -69,7 +69,7 @@ public class ChannelMessagePurger {
}
public void purgeChannel(CommandContext context) {
ThreadManager.getExecutor("bulk-delete", ThreadManager.ExecutorType.FIXED).submit(() -> {
ThreadManager.getExecutor().submit(() -> {
if (lock.tryLock()) {
try {
int total = countAllChannelMessages(channel);
@@ -11,7 +11,11 @@ import com.sedmelluq.discord.lavaplayer.track.AudioPlaylist;
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
import com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.entities.*;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.MessageEmbed;
import net.dv8tion.jda.api.entities.channel.ChannelType;
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
import netneutrality.command.AbstractCommand;
import netneutrality.command.CommandType;
import netneutrality.core.CommandManager;
@@ -94,6 +98,20 @@ public class MessageFunction {
return message.build();
}
public static MessageEmbed buildSearchResultsMessage(List<AudioTrack> tracks) {
EmbedBuilder message = new EmbedBuilder();
message.setTitle("Select the track to add to the queue");
message.setColor(Color.BLUE);
int i = 0;
for (AudioTrack track : tracks) {
message.addField(++i + ": ", String.format("**`%s`**", track.getInfo().title), false);
}
return message.build();
}
public static MessageEmbed buildAddingPlaylistMessage(AudioPlaylist playlist, String identifier, SourceFinder.AudioSourceType type) {
EmbedBuilder message = new EmbedBuilder();
String url = identifier;
@@ -7,7 +7,7 @@ package netneutrality.utils;
*/
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.VoiceChannel;
import net.dv8tion.jda.api.entities.channel.concrete.VoiceChannel;
import netneutrality.core.context.CommandContext;
import netneutrality.exceptions.CommandExecutionException;
import netneutrality.music.MusicManager;
@@ -7,13 +7,6 @@ import net.dv8tion.jda.api.entities.Role;
public class UserFunction {
public static boolean isAdmin(Member user) {
// This check will only be present during the development of the bot
String creatorId = Settings.getInstance().getCreatorId();
if (creatorId != null && user.getId().equals(creatorId)) {
return true;
}
boolean isAdmin = false;
for(Role role : user.getRoles()) {
if (role.getPermissions().contains(Permission.MANAGE_SERVER) || role.getPermissions().contains(Permission.ADMINISTRATOR))