use of main.commands.prefixcommands.audio.SkipCommand in project Robertify-Bot by bombies.
the class Robertify method main.
public static void main(String[] args) {
WebUtils.setUserAgent("Mozilla/Robertify / bombies#4445");
try {
lavalink = new JdaLavalink(getIdFromToken(Config.getBotToken()), Config.getShardCount(), shardId -> Robertify.getShardManager().getShardById(shardId));
for (var node : Config.getLavaNodes()) lavalink.addNode(node.getURI(), node.getPassword());
lavalink.getLoadBalancer().addPenalty(LavalinkLoadBalancer.Penalties::getPlayerPenalty);
lavalink.getLoadBalancer().addPenalty(LavalinkLoadBalancer.Penalties::getCpuPenalty);
var thread = new ThreadFactoryBuilder().setNameFormat("RobertifyShutdownHook").build();
Runtime.getRuntime().addShutdownHook(thread.newThread(() -> {
logger.info("Destroying all players (If any left)");
shardManager.getGuildCache().stream().filter(guild -> guild.getSelfMember().getVoiceState().inVoiceChannel()).forEach(guild -> {
GuildMusicManager musicManager = RobertifyAudioManager.getInstance().getMusicManager(guild);
ResumeUtils.getInstance().saveInfo(guild, guild.getSelfMember().getVoiceState().getChannel());
musicManager.getScheduler().scheduleDisconnect(false, 0, TimeUnit.SECONDS);
});
shardManager.shutdown();
}));
DefaultShardManagerBuilder jdaBuilder = DefaultShardManagerBuilder.createDefault(Config.getBotToken(), GatewayIntent.GUILD_VOICE_STATES, GatewayIntent.GUILD_MESSAGES, GatewayIntent.DIRECT_MESSAGES).setShardsTotal(Config.getShardCount()).setBulkDeleteSplittingEnabled(false).setChunkingFilter(ChunkingFilter.NONE).setMemberCachePolicy(MemberCachePolicy.VOICE).addEventListeners(lavalink, VoiceChannelEvents.waiter, commandWaiter, new Listener(), new VoiceChannelEvents(), new DedicatedChannelEvents(), new PollEvents(), new SuggestionCategoryDeletionEvents(), new ReportsEvents(), new AnnouncementChannelEvents(), new LogChannelEvents(), new SkipCommand()).setVoiceDispatchInterceptor(lavalink.getVoiceInterceptor()).addEventListeners(new MenuPaginationTestCommand()).addEventListeners(new PaginationEvents()).enableCache(CacheFlag.VOICE_STATE).disableCache(CacheFlag.ACTIVITY, CacheFlag.EMOTE, CacheFlag.CLIENT_STATUS, CacheFlag.ROLE_TAGS, CacheFlag.ONLINE_STATUS).disableIntents(GatewayIntent.DIRECT_MESSAGE_TYPING, GatewayIntent.GUILD_BANS, GatewayIntent.GUILD_INVITES, GatewayIntent.GUILD_MEMBERS, GatewayIntent.GUILD_MESSAGE_TYPING, GatewayIntent.GUILD_PRESENCES, GatewayIntent.DIRECT_MESSAGE_REACTIONS).setGatewayEncoding(GatewayEncoding.ETF).setActivity(Activity.listening("Starting up..."));
// Register all slash commands
SlashCommandManager slashCommandManager = new SlashCommandManager();
for (var cmd : slashCommandManager.getCommands()) jdaBuilder.addEventListeners(cmd);
for (var cmd : slashCommandManager.getDevCommands()) jdaBuilder.addEventListeners(cmd);
// Initialize the JSON directory
// This is a deprecated feature and is marked for removal
// Until everything is fully removed, this method needs to be enabled
// For a proper first-boot.
AbstractJSONFile.initDirectory();
AbstractMongoDatabase.initAllCaches();
logger.info("Initialized all caches");
new ChangeLogConfig().initConfig();
GuildDBCache.getInstance().loadAllGuilds();
logger.info("All guilds have been loaded into cache");
shardManager = jdaBuilder.build();
spotifyApi = new SpotifyApi.Builder().setClientId(Config.get(ENV.SPOTIFY_CLIENT_ID)).setClientSecret(Config.get(ENV.SPOTIFY_CLIENT_SECRET)).setRedirectUri(SpotifyHttpManager.makeUri("http://localhost/callback/")).build();
deezerApi = new DeezerApi();
initVoteSiteAPIs();
final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(SpotifyAuthorizationUtils.doTokenRefresh(), 0, 1, TimeUnit.HOURS);
try {
baringo = new BaringoClient.Builder().clientAuth(Config.get(ENV.IMGUR_CLIENT), Config.get(ENV.IMGUR_SECRET)).build();
} catch (BaringoApiException e) {
logger.error("[ERROR] There was an issue building the Baringo client!", e);
}
} catch (Exception e) {
logger.error("[FATAL ERROR] An unexpected error occurred!", e);
}
}
use of main.commands.prefixcommands.audio.SkipCommand in project Robertify-Bot by bombies.
the class SkipSlashCommand method onSlashCommand.
@Override
public void onSlashCommand(@NotNull SlashCommandEvent event) {
if (!nameCheck(event))
return;
if (!banCheck(event))
return;
if (!restrictedChannelCheck(event))
return;
event.deferReply().queue();
final var selfVoiceState = event.getGuild().getSelfMember().getVoiceState();
final var memberVoiceState = event.getMember().getVoiceState();
if (!musicCommandDJCheck(event)) {
if (!selfVoiceState.inVoiceChannel()) {
event.getHook().sendMessageEmbeds(RobertifyEmbedUtils.embedMessage(event.getGuild(), "I must be in a voice channel before this command can be executed!").build()).setEphemeral(true).queue();
return;
}
if (selfVoiceState.getChannel().getMembers().size() != 2) {
MessageEmbed embed = new SkipCommand().handleVoteSkip(event.getTextChannel(), selfVoiceState, memberVoiceState);
if (embed != null) {
event.getHook().sendMessageEmbeds(embed).setEphemeral(false).queue();
} else {
event.getHook().sendMessageEmbeds(RobertifyEmbedUtils.embedMessage(event.getGuild(), "Started a vote skip!").build()).setEphemeral(true).queue();
}
sendRandomMessage(event);
return;
}
}
if (event.getOptions().isEmpty()) {
event.getHook().sendMessageEmbeds(new SkipCommand().handleSkip(selfVoiceState, memberVoiceState)).setEphemeral(false).queue();
} else {
final var musicManager = RobertifyAudioManager.getInstance().getMusicManager(event.getGuild());
final ConcurrentLinkedQueue<AudioTrack> queue = musicManager.getScheduler().queue;
final int tracksToSkip = GeneralUtils.longToInt(event.getOption("trackstoskip").getAsLong());
event.getHook().sendMessageEmbeds(new SkipToCommand().handleSkip(event.getUser(), queue, musicManager, tracksToSkip).build()).setEphemeral(false).queue();
}
sendRandomMessage(event);
}
Aggregations