From 61150c50630615ababfb7f4d6a0da8d44cb03a5a Mon Sep 17 00:00:00 2001 From: loki5512344 Date: Wed, 29 Jul 2026 19:18:32 +0200 Subject: [PATCH] refactor: add final to all method/constructor parameters (MethodArgumentCouldBeFinal) - Add final to every method/constructor parameter that is not assigned in the method body - Handle annotations, varargs, generics, throws clauses - Skip record components, lambdas, catch clauses, enum constructors - Skip parameters that are reassigned in the method body --- src/main/java/creator/loki/bootstrap/App.java | 2 +- .../creator/loki/bootstrap/ReadyListener.java | 2 +- .../creator/loki/config/ConfigLoader.java | 4 +- .../creator/loki/core/BotInitializer.java | 4 +- .../creator/loki/core/BotJdaRegistry.java | 8 +-- .../creator/loki/core/EventDispatcher.java | 2 +- .../java/creator/loki/core/JdaFactory.java | 4 +- .../loki/core/LavalinkManagerFactory.java | 3 +- .../creator/loki/core/ListenerAggregator.java | 26 +--------- .../java/creator/loki/core/MessageCache.java | 4 +- .../creator/loki/core/ShutdownManager.java | 6 +-- .../loki/core/exception/CommandException.java | 2 +- .../exception/CommandExceptionHandler.java | 5 +- .../loki/core/registry/CommandRegistrar.java | 2 +- .../loki/core/registry/CommandRegistry.java | 4 +- .../loki/core/security/CooldownManager.java | 6 +-- .../loki/core/security/RateLimiter.java | 8 +-- .../java/creator/loki/database/Database.java | 8 +-- .../loki/database/DatabaseMigration.java | 12 ++--- .../creator/loki/database/DatabaseModule.java | 14 +++--- .../loki/database/schema/CoreTables.java | 12 ++--- .../loki/database/schema/FeatureTables.java | 4 +- src/main/java/creator/loki/di/BotModule.java | 6 +-- .../java/creator/loki/embed/EmbedFactory.java | 22 ++++----- .../creator/loki/embed/EmbedTemplates.java | 8 +-- .../creator/loki/embed/HelpCategories.java | 9 ++-- .../commands/GenerateRatingsCommand.java | 10 ++-- .../feature/config/SetupSlashHandler.java | 28 +++++------ .../config/repository/ConfigRepository.java | 10 ++-- .../PrefixedGuildConfigRepository.java | 8 +-- .../loki/feature/counter/CounterModule.java | 5 +- .../repository/CounterStatsRepository.java | 16 +++--- .../counter/service/CounterManager.java | 4 +- .../service/CounterSetupPrefixCommand.java | 8 +-- .../format/CounterConfigFormatter.java | 17 ++----- .../listener/MemberCounterListener.java | 4 +- .../economy/EconomyCommandRegistrar.java | 2 +- .../loki/feature/economy/EconomyModule.java | 15 +++--- .../feature/economy/FishMessageListener.java | 2 +- .../economy/command/bank/BankCommand.java | 2 +- .../economy/command/core/BalanceCommand.java | 2 +- .../economy/command/core/BaltopCommand.java | 2 +- .../economy/command/core/DailyCommand.java | 2 +- .../economy/command/core/PayCommand.java | 2 +- .../economy/command/job/JobCommand.java | 10 ++-- .../economy/command/job/WorkCommand.java | 4 +- .../command/minigame/BlackjackCommand.java | 14 +++--- .../economy/command/minigame/FishCommand.java | 2 +- .../economy/command/minigame/SlotCommand.java | 2 +- .../economy/command/social/RobCommand.java | 2 +- .../economy/domain/EconomyAccount.java | 14 +++--- .../economy/domain/EconomyAccountBuilder.java | 2 +- .../loki/feature/economy/domain/Job.java | 2 +- .../economy/domain/SlotCombination.java | 2 +- .../economy/repository/EconomyRepository.java | 10 ++-- .../repository/SqlEconomyRepository.java | 14 +++--- .../economy/service/EconomyService.java | 20 ++++---- .../economy/service/FishingService.java | 6 +-- .../service/game/BlackjackService.java | 19 +++---- .../economy/service/game/JobService.java | 6 +-- .../economy/service/game/SlotService.java | 2 +- .../EntertainmentCommandRegistrar.java | 2 +- .../commands/GlazbobaCommand.java | 2 +- .../entertainment/commands/MemeCommand.java | 2 +- .../commands/choice/RandomChoiceCommand.java | 8 +-- .../commands/random/CoinCommand.java | 2 +- .../commands/random/DiceCommand.java | 2 +- .../commands/random/EightBallCommand.java | 2 +- .../entertainment/service/RatingService.java | 6 +-- .../loki/feature/help/HelpMenuHandler.java | 7 ++- .../feature/help/commands/HelpCommand.java | 11 ++--- .../loki/feature/image/ImageModule.java | 2 +- .../image/commands/AbstractImageCommand.java | 6 +-- .../image/commands/booru/GelbooruCommand.java | 4 +- .../image/commands/booru/YandereCommand.java | 4 +- .../image/commands/e621/E621Command.java | 4 +- .../commands/e621/E621RandomCommand.java | 6 +-- .../listener/ImageNavigationHandler.java | 12 ++--- .../feature/image/service/ImageService.java | 8 +-- .../feature/image/service/ImageSession.java | 13 ++--- .../image/service/ImageSessionManager.java | 10 ++-- .../image/util/ImageCommandRegistrar.java | 2 +- .../feature/image/util/ImageEmbedHelper.java | 8 +-- .../feature/info/commands/AvatarCommand.java | 2 +- .../feature/info/commands/InfoCommand.java | 6 +-- .../feature/info/commands/PingCommand.java | 2 +- .../info/commands/ServerStatsCommand.java | 8 +-- .../LeaderboardButtonListener.java | 8 +-- .../leaderboard/LeaderboardCommand.java | 2 +- .../leaderboard/LeaderboardFormatter.java | 14 ++---- .../loki/feature/level/LevelModule.java | 17 +++---- .../level/commands/LevelCommandRegistrar.java | 2 +- .../level/commands/LevelRoleCommand.java | 8 +-- .../commands/admin/ResetLevelsCommand.java | 4 +- .../level/commands/admin/StatsCommand.java | 2 +- .../commands/util/LevelRoleFormatter.java | 3 +- .../loki/feature/level/domain/UserStats.java | 10 ++-- .../loki/feature/level/domain/XpFormula.java | 8 +-- .../level/listener/MessageListener.java | 2 +- .../listener/ResetLevelsButtonHandler.java | 2 +- .../repository/SqlUserStatsRepository.java | 26 +++++----- .../level/repository/UserStatsMapper.java | 26 +++++----- .../level/repository/UserStatsRepository.java | 14 +++--- .../level/service/LeaderboardService.java | 12 ++--- .../level/service/LevelRoleService.java | 8 +-- .../feature/level/service/LevelService.java | 10 ++-- .../cooldown/MessageCooldownService.java | 6 +-- .../service/tracker/LevelUpNotifier.java | 9 ++-- .../level/service/tracker/VoiceTracker.java | 2 +- .../logging/LogSetupPrefixCommand.java | 10 ++-- .../feature/metrics/HealthHttpServer.java | 6 +-- .../feature/metrics/MetricsCollector.java | 14 +++--- .../metrics/commands/MetricsCommand.java | 2 +- .../ModerationCommandRegistrar.java | 2 +- .../feature/moderation/ModerationModule.java | 13 ++--- .../feature/moderation/MuteRoleService.java | 14 +++--- .../feature/moderation/MuteScheduler.java | 8 +-- .../caselookup/CaseLookupCommand.java | 4 +- .../commands/punish/MuteCommand.java | 49 ++++--------------- .../commands/punish/PunishCommand.java | 9 ++-- .../commands/punish/UnmuteCommand.java | 13 ++--- .../moderation/commands/swap/SwapCommand.java | 2 +- .../commands/utils/ClearCommand.java | 4 +- .../commands/utils/ClearSlashCommands.java | 2 +- .../commands/utils/SlowmodeCommand.java | 4 +- .../commands/warn/UnwarnCommand.java | 6 +-- .../moderation/commands/warn/WarnCommand.java | 18 +++---- .../commands/warn/WarningsHistoryCommand.java | 8 +-- .../feature/moderation/log/LogEmbeds.java | 25 ++++------ .../moderation/log/ModerationLogger.java | 33 ++++++------- .../repository/ActiveMuteRepository.java | 8 +-- .../repository/ModerationCaseRepository.java | 11 +---- .../repository/WarningRepository.java | 10 ++-- .../sql/SqlActiveMuteRepository.java | 20 ++++---- .../sql/SqlModerationCaseRepository.java | 21 +++----- .../repository/sql/SqlWarningRepository.java | 30 ++++++------ .../moderation/util/ModerationHelper.java | 4 +- .../feature/music/MusicCommandRegistrar.java | 2 +- .../feature/music/MusicSlashCommands.java | 6 +-- .../music/commands/FilterCommands.java | 8 +-- .../music/commands/PlayerCommands.java | 8 +-- .../feature/music/commands/QueueCommands.java | 14 +++--- .../feature/music/core/LavalinkManager.java | 12 ++--- .../feature/music/core/PlayerManager.java | 2 +- .../feature/music/core/SearchManager.java | 8 +-- .../listener/MusicBotControlHandler.java | 36 +++++++------- .../music/listener/MusicBotListener.java | 9 ++-- .../music/listener/MusicBotPlayHandler.java | 30 ++++++------ .../music/listener/PlaySelectHandler.java | 2 +- .../feature/music/manage/FilterState.java | 10 ++-- .../music/manage/GuildMusicManager.java | 4 +- .../feature/music/manage/TrackScheduler.java | 20 ++++---- .../feature/music/manage/TrackStarter.java | 4 +- .../loki/feature/music/play/PlayCommand.java | 31 ++++-------- .../feature/music/play/PlayLoadHandler.java | 16 +++--- .../feature/music/play/SearchHandler.java | 14 +++--- .../loki/feature/music/play/TrackLoader.java | 25 ++++------ .../music/repository/FilterRepository.java | 8 +-- .../music/repository/QueueRepository.java | 14 +++--- .../music/slash/FilterSlashHandler.java | 14 +++--- .../feature/music/slash/PlaySlashHandler.java | 25 +++++----- .../music/slash/QueueSlashHandler.java | 24 ++++----- .../loki/feature/profile/ProfileModule.java | 6 +-- .../profile/command/ProfileCommand.java | 2 +- .../profile/render/RankCardGenerator.java | 10 ++-- .../feature/profile/render/RankCardIcons.java | 8 +-- .../profile/render/RankCardRenderer.java | 22 +++------ .../profile/service/ProfileService.java | 2 +- .../feature/radio/RadioCommandRegistrar.java | 2 +- .../feature/radio/commands/RadioCommand.java | 10 ++-- .../radio/listener/RadioBotListener.java | 14 +++--- .../feature/radio/service/RadioManager.java | 24 ++++----- .../rating/commands/body/FatCommand.java | 2 +- .../rating/commands/body/MustacheCommand.java | 2 +- .../rating/commands/body/PpCommand.java | 2 +- .../rating/commands/fortune/AuraCommand.java | 2 +- .../rating/commands/fortune/LuckCommand.java | 2 +- .../rating/commands/fortune/RizzCommand.java | 2 +- .../commands/mind/BoykisserCommand.java | 2 +- .../rating/commands/mind/GayCommand.java | 2 +- .../rating/commands/mind/IqCommand.java | 2 +- .../rating/commands/vibe/GlazeCommand.java | 2 +- .../rating/commands/vibe/GoonCommand.java | 2 +- .../rating/commands/vibe/SimpCommand.java | 2 +- .../rating/commands/vibe/VibeCommand.java | 2 +- .../feature/rating/config/RatingConfig.java | 4 +- .../feature/rating/config/RatingLevel.java | 2 +- .../rating/repository/RatingsRepository.java | 32 ++++++------ .../ReactionRolesCommandRegistrar.java | 2 +- .../commands/ReactionRoleCommand.java | 10 ++-- .../listener/ReactionRoleListener.java | 4 +- .../repository/ReactionRoleRepository.java | 24 ++++----- .../feature/reputation/MinusRepCommand.java | 2 +- .../loki/feature/reputation/RepCommand.java | 4 +- .../feature/reputation/RepTopCommand.java | 2 +- .../repository/ReputationRepository.java | 24 ++++----- .../loki/feature/roast/AgrCommand.java | 4 +- .../loki/feature/roast/AgrSlashCommands.java | 2 +- .../loki/feature/roast/AiSessionManager.java | 11 ++--- .../loki/feature/roast/AndrertListener.java | 17 +++---- .../loki/feature/roast/ContentFetcher.java | 16 +++--- .../feature/roast/DebateChannelListener.java | 2 +- .../loki/feature/roast/DebateService.java | 12 ++--- .../loki/feature/roast/DeepSeekClient.java | 8 +-- .../loki/feature/roast/DossierCommand.java | 4 +- .../loki/feature/roast/HelperListener.java | 10 ++-- .../loki/feature/roast/KnowledgeService.java | 8 +-- .../loki/feature/roast/LanguageFilter.java | 2 +- .../loki/feature/roast/MessageScanner.java | 5 +- .../loki/feature/roast/RoastService.java | 21 ++++---- .../loki/feature/roast/WebSearchService.java | 8 +-- .../loki/feature/roast/WikipediaService.java | 6 +-- .../loki/feature/role/CustomRoleManager.java | 12 ++--- .../creator/loki/feature/role/RoleModule.java | 4 +- .../role/command/CreateRoleCommand.java | 14 +++--- .../role/command/DeleteRoleCommand.java | 2 +- .../feature/role/command/EditRoleCommand.java | 2 +- .../feature/role/command/MyRolesCommand.java | 2 +- .../role/repository/CustomRoleRepository.java | 34 ++++++------- .../role/validation/RoleCommandValidator.java | 8 +-- .../role/validation/RoleValidators.java | 7 ++- .../serverstats/ServerStatsService.java | 10 ++-- .../loki/feature/ship/ShipCommand.java | 8 +-- .../ship/repository/ShipPairRepository.java | 18 +++---- .../social/commands/ComplimentCommand.java | 2 +- .../feature/social/commands/PatCommand.java | 2 +- .../feature/social/commands/RoastCommand.java | 2 +- .../social/commands/SocialCommand.java | 2 +- .../ticket/TicketCommandRegistrar.java | 2 +- .../ticket/commands/TicketSetupCommand.java | 2 +- .../ticket/listener/TicketListener.java | 10 ++-- .../ticket/repository/TicketRepository.java | 26 +++++----- .../loki/feature/tiktok/TikTokApi.java | 6 +-- .../loki/feature/tiktok/TikTokCommand.java | 10 ++-- .../loki/feature/tiktok/TikTokModule.java | 2 +- .../feature/utility/ChoiceOptionParser.java | 8 +-- .../loki/feature/utility/TimerCommand.java | 2 +- .../utility/UtilityCommandRegistrar.java | 16 +----- .../loki/feature/utility/VoiceHelper.java | 6 +-- .../feature/utility/commands/PollCommand.java | 2 +- .../loki/feature/voice/VoiceModule.java | 9 ++-- .../voice/handler/VoiceButtonHandler.java | 14 +++--- .../voice/handler/VoiceModalHandler.java | 8 +-- .../voice/listener/VoiceChannelListener.java | 2 +- .../voice/listener/VoiceSyncListener.java | 2 +- .../repository/VoiceChannelRepository.java | 14 +++--- .../repository/VoicePresetRepository.java | 16 +++--- .../voice/service/VoiceChannelManager.java | 25 +++++----- .../service/VoiceSetupPrefixCommand.java | 10 ++-- .../loki/feature/welcome/WelcomeListener.java | 4 +- .../loki/integration/nekos/NekosLifeApi.java | 6 +-- .../loki/util/GuildChannelResolve.java | 9 ++-- .../creator/loki/util/LoggerDecorator.java | 18 +++---- 253 files changed, 1009 insertions(+), 1210 deletions(-) diff --git a/src/main/java/creator/loki/bootstrap/App.java b/src/main/java/creator/loki/bootstrap/App.java index 162f9e9..34b337b 100644 --- a/src/main/java/creator/loki/bootstrap/App.java +++ b/src/main/java/creator/loki/bootstrap/App.java @@ -13,7 +13,7 @@ public class App { private static final Logger logger = LoggerFactory.getLogger(App.class); private static volatile boolean shutdownRequested = false; - public static void main(String[] args) { + public static void main(final String[] args) { Thread shutdownHook = new Thread( () -> { diff --git a/src/main/java/creator/loki/bootstrap/ReadyListener.java b/src/main/java/creator/loki/bootstrap/ReadyListener.java index a231a1b..667564c 100644 --- a/src/main/java/creator/loki/bootstrap/ReadyListener.java +++ b/src/main/java/creator/loki/bootstrap/ReadyListener.java @@ -12,7 +12,7 @@ public class ReadyListener extends ListenerAdapter { private static final Logger logger = LoggerFactory.getLogger(ReadyListener.class); @Override - public void onReady(ReadyEvent event) { + public void onReady(final ReadyEvent event) { LoggerDecorator.success( logger, "Бот " + event.getJDA().getSelfUser().getName() + " успешно запущен!"); LoggerDecorator.bot(logger, "Подключен к " + event.getGuildTotalCount() + " серверам"); diff --git a/src/main/java/creator/loki/config/ConfigLoader.java b/src/main/java/creator/loki/config/ConfigLoader.java index e9d76a8..899ca8e 100644 --- a/src/main/java/creator/loki/config/ConfigLoader.java +++ b/src/main/java/creator/loki/config/ConfigLoader.java @@ -19,12 +19,12 @@ public final class ConfigLoader { Boolean.parseBoolean(getEnv(dotenv, "LAVALINK_ENABLED", "true"))); } - private static String getEnv(Dotenv dotenv, String key, String defaultValue) { + private static String getEnv(Dotenv dotenv, final String key, final String defaultValue) { String value = dotenv.get(key); return (value != null && !value.isBlank()) ? value : defaultValue; } - private static int parsePort(String raw, String key) { + private static int parsePort(String raw, final String key) { if (raw == null || raw.isBlank()) return 0; try { int port = Integer.parseInt(raw.trim()); diff --git a/src/main/java/creator/loki/core/BotInitializer.java b/src/main/java/creator/loki/core/BotInitializer.java index 2962281..1f3d9db 100644 --- a/src/main/java/creator/loki/core/BotInitializer.java +++ b/src/main/java/creator/loki/core/BotInitializer.java @@ -120,7 +120,7 @@ public class BotInitializer { return buildWithLavalink(builder, ml); } - private JDA createRadioJDA(LavalinkManager radioLavalink) { + private JDA createRadioJDA(final LavalinkManager radioLavalink) { if (config.getRadioToken() == null || config.getRadioToken().isBlank()) return null; LoggerDecorator.startup(logger, "Инициализация radio бота..."); var builder = @@ -134,7 +134,7 @@ public class BotInitializer { return buildWithLavalink(builder, radioLavalink); } - private static JDA buildWithLavalink(JDABuilder builder, LavalinkManager ll) { + private static JDA buildWithLavalink(final JDABuilder builder, final LavalinkManager ll) { if (ll.getClient() != null) { builder.setVoiceDispatchInterceptor(new JDAVoiceUpdateListener(ll.getClient())); } diff --git a/src/main/java/creator/loki/core/BotJdaRegistry.java b/src/main/java/creator/loki/core/BotJdaRegistry.java index 68fe4df..d2aee6b 100644 --- a/src/main/java/creator/loki/core/BotJdaRegistry.java +++ b/src/main/java/creator/loki/core/BotJdaRegistry.java @@ -9,19 +9,19 @@ public class BotJdaRegistry { private JDA music; private JDA radio; - public void setMain(JDA jda) { + public void setMain(final JDA jda) { this.main = jda; } - public void setMusic(JDA jda) { + public void setMusic(final JDA jda) { this.music = jda; } - public void setRadio(JDA jda) { + public void setRadio(final JDA jda) { this.radio = jda; } - public JDA getByPersonality(String personality) { + public JDA getByPersonality(final String personality) { return switch (personality) { case "windows" -> music != null ? music : main; case "gentoo" -> radio != null ? radio : main; diff --git a/src/main/java/creator/loki/core/EventDispatcher.java b/src/main/java/creator/loki/core/EventDispatcher.java index fef74ae..1020901 100644 --- a/src/main/java/creator/loki/core/EventDispatcher.java +++ b/src/main/java/creator/loki/core/EventDispatcher.java @@ -39,7 +39,7 @@ public class EventDispatcher implements Lifecycle { this.metrics = metrics; } - public void handleMessage(MessageReceivedEvent event) { + public void handleMessage(final MessageReceivedEvent event) { // Игнорируем ботов if (event.getAuthor().isBot()) { return; diff --git a/src/main/java/creator/loki/core/JdaFactory.java b/src/main/java/creator/loki/core/JdaFactory.java index 4ea79ab..97b56fd 100644 --- a/src/main/java/creator/loki/core/JdaFactory.java +++ b/src/main/java/creator/loki/core/JdaFactory.java @@ -12,7 +12,7 @@ import net.dv8tion.jda.api.utils.cache.CacheFlag; public final class JdaFactory { private JdaFactory() {} - public static JDABuilder createBuilder(String token, String activity, GatewayIntent... intents) { + public static JDABuilder createBuilder(final String token, final String activity, final GatewayIntent... intents) { return JDABuilder.createDefault(token) .setStatus(OnlineStatus.ONLINE) .setActivity(Activity.playing(activity)) @@ -20,7 +20,7 @@ public final class JdaFactory { .enableCache(CacheFlag.VOICE_STATE); } - public static JDA awaitJda(JDA jda) { + public static JDA awaitJda(final JDA jda) { try { jda.awaitReady(); } catch (InterruptedException e) { diff --git a/src/main/java/creator/loki/core/LavalinkManagerFactory.java b/src/main/java/creator/loki/core/LavalinkManagerFactory.java index 0a37a03..4d1ca0d 100644 --- a/src/main/java/creator/loki/core/LavalinkManagerFactory.java +++ b/src/main/java/creator/loki/core/LavalinkManagerFactory.java @@ -7,8 +7,7 @@ import creator.loki.feature.music.repository.QueueRepository; public final class LavalinkManagerFactory { private LavalinkManagerFactory() {} - public static LavalinkManager create( - BotConfig config, QueueRepository queueRepository, String token) { + public static LavalinkManager create(final BotConfig config, final QueueRepository queueRepository, final String token) { return new LavalinkManager(config, queueRepository, token); } } diff --git a/src/main/java/creator/loki/core/ListenerAggregator.java b/src/main/java/creator/loki/core/ListenerAggregator.java index e9ed883..ce02f38 100644 --- a/src/main/java/creator/loki/core/ListenerAggregator.java +++ b/src/main/java/creator/loki/core/ListenerAggregator.java @@ -31,31 +31,7 @@ public class ListenerAggregator { private final Object[] listeners; @Inject - public ListenerAggregator( - ReadyListener readyListener, - MessageListener messageListener, - VoiceTracker voiceTracker, - VoiceChannelListener voiceChannelListener, - MemberCounterListener memberCounterListener, - VoiceButtonHandler voiceButtonHandler, - VoiceModalHandler voiceModalHandler, - VoiceSyncListener voiceSyncListener, - WelcomeListener welcomeListener, - ModerationLogger moderationLogger, - HelpMenuHandler helpMenuHandler, - ResetLevelsButtonHandler resetLevelsButtonHandler, - LeaderboardButtonListener leaderboardButtonListener, - MessageCache messageCache, - MusicSlashCommands musicSlashCommands, - PlaySelectHandler playSelectHandler, - FishMessageListener fishMessageListener, - AndrertListener andrertListener, - ClearSlashCommands clearSlashCommands, - HelperListener helperListener, - ImageNavigationHandler imageNavigationHandler, - SetupSlashHandler setupSlashHandler, - TicketListener ticketListener, - ReactionRoleListener reactionRoleListener) { + public ListenerAggregator(final ReadyListener readyListener, final MessageListener messageListener, final VoiceTracker voiceTracker, final VoiceChannelListener voiceChannelListener, final MemberCounterListener memberCounterListener, final VoiceButtonHandler voiceButtonHandler, final VoiceModalHandler voiceModalHandler, final VoiceSyncListener voiceSyncListener, final WelcomeListener welcomeListener, final ModerationLogger moderationLogger, final HelpMenuHandler helpMenuHandler, final ResetLevelsButtonHandler resetLevelsButtonHandler, final LeaderboardButtonListener leaderboardButtonListener, final MessageCache messageCache, final MusicSlashCommands musicSlashCommands, final PlaySelectHandler playSelectHandler, final FishMessageListener fishMessageListener, final AndrertListener andrertListener, final ClearSlashCommands clearSlashCommands, final HelperListener helperListener, final ImageNavigationHandler imageNavigationHandler, final SetupSlashHandler setupSlashHandler, final TicketListener ticketListener, final ReactionRoleListener reactionRoleListener) { this.listeners = new Object[] { readyListener, diff --git a/src/main/java/creator/loki/core/MessageCache.java b/src/main/java/creator/loki/core/MessageCache.java index 1cad615..a73a664 100644 --- a/src/main/java/creator/loki/core/MessageCache.java +++ b/src/main/java/creator/loki/core/MessageCache.java @@ -16,7 +16,7 @@ public class MessageCache extends ListenerAdapter { } @Override - public void onMessageReceived(MessageReceivedEvent event) { + public void onMessageReceived(final MessageReceivedEvent event) { if (event.getAuthor().isBot()) return; String content = event.getMessage().getContentRaw(); if (!content.isBlank()) { @@ -24,7 +24,7 @@ public class MessageCache extends ListenerAdapter { } } - public String getContent(String messageId) { + public String getContent(final String messageId) { return cache.getIfPresent(messageId); } } diff --git a/src/main/java/creator/loki/core/ShutdownManager.java b/src/main/java/creator/loki/core/ShutdownManager.java index f79278f..6ff148b 100644 --- a/src/main/java/creator/loki/core/ShutdownManager.java +++ b/src/main/java/creator/loki/core/ShutdownManager.java @@ -27,7 +27,7 @@ public class ShutdownManager { this.radioManager = radioManager; } - public void shutdown(JDA jda) { + public void shutdown(final JDA jda) { shutdown(new BotCluster(jda, null, null)); } @@ -35,7 +35,7 @@ public class ShutdownManager { shutdown(new BotCluster(null, null, null)); } - public void shutdown(BotCluster cluster) { + public void shutdown(final BotCluster cluster) { logger.info("========================================"); logger.info("Получен сигнал завершения работы ботов..."); logger.info("========================================"); @@ -70,7 +70,7 @@ public class ShutdownManager { LoggerDecorator.success(logger, "Боты успешно завершены!"); } - private void shutdownJDA(JDA jda, String name) { + private void shutdownJDA(final JDA jda, final String name) { LoggerDecorator.bot(logger, "Отключение " + name + " JDA..."); jda.shutdown(); try { diff --git a/src/main/java/creator/loki/core/exception/CommandException.java b/src/main/java/creator/loki/core/exception/CommandException.java index d6d0201..c6369e6 100644 --- a/src/main/java/creator/loki/core/exception/CommandException.java +++ b/src/main/java/creator/loki/core/exception/CommandException.java @@ -10,7 +10,7 @@ public class CommandException extends Exception { this.userMessage = userMessage; } - public CommandException(String userMessage, Throwable cause) { + public CommandException(String userMessage, final Throwable cause) { super(userMessage, cause); this.userMessage = userMessage; } diff --git a/src/main/java/creator/loki/core/exception/CommandExceptionHandler.java b/src/main/java/creator/loki/core/exception/CommandExceptionHandler.java index 180a9f6..f724bdd 100644 --- a/src/main/java/creator/loki/core/exception/CommandExceptionHandler.java +++ b/src/main/java/creator/loki/core/exception/CommandExceptionHandler.java @@ -14,7 +14,7 @@ public class CommandExceptionHandler { private static final Logger logger = LoggerFactory.getLogger(CommandExceptionHandler.class); /** Обрабатывает исключение и отправляет сообщение пользователю */ - public static void handle(Throwable throwable, MessageChannel channel, String commandName) { + public static void handle(final Throwable throwable, final MessageChannel channel, final String commandName) { LoggerDecorator.error(logger, "Ошибка при выполнении команды: " + commandName, throwable); String userMessage; @@ -43,8 +43,7 @@ public class CommandExceptionHandler { } /** Обрабатывает исключение с кастомным сообщением */ - public static void handle( - Throwable throwable, MessageChannel channel, String commandName, String customMessage) { + public static void handle(final Throwable throwable, final MessageChannel channel, final String commandName, final String customMessage) { LoggerDecorator.error(logger, "Ошибка при выполнении команды: " + commandName, throwable); MessageEmbed errorEmbed = diff --git a/src/main/java/creator/loki/core/registry/CommandRegistrar.java b/src/main/java/creator/loki/core/registry/CommandRegistrar.java index 5b21224..f0b5b35 100644 --- a/src/main/java/creator/loki/core/registry/CommandRegistrar.java +++ b/src/main/java/creator/loki/core/registry/CommandRegistrar.java @@ -2,5 +2,5 @@ package creator.loki.core.registry; @FunctionalInterface public interface CommandRegistrar { - void register(CommandRegistry registry); + void register(final CommandRegistry registry); } diff --git a/src/main/java/creator/loki/core/registry/CommandRegistry.java b/src/main/java/creator/loki/core/registry/CommandRegistry.java index 6e7fe85..3f1665b 100644 --- a/src/main/java/creator/loki/core/registry/CommandRegistry.java +++ b/src/main/java/creator/loki/core/registry/CommandRegistry.java @@ -14,7 +14,7 @@ public class CommandRegistry { private static final Logger logger = LoggerFactory.getLogger(CommandRegistry.class); private final Map commands = new HashMap<>(); - public void register(Command command) { + public void register(final Command command) { String key = command.getName().toLowerCase(); Command previous = commands.put(key, command); if (previous != null) { @@ -31,7 +31,7 @@ public class CommandRegistry { } } - public Command getCommand(String name) { + public Command getCommand(final String name) { return commands.get(name.toLowerCase()); } diff --git a/src/main/java/creator/loki/core/security/CooldownManager.java b/src/main/java/creator/loki/core/security/CooldownManager.java index d9406c8..b0e2233 100644 --- a/src/main/java/creator/loki/core/security/CooldownManager.java +++ b/src/main/java/creator/loki/core/security/CooldownManager.java @@ -20,7 +20,7 @@ public class CooldownManager implements Lifecycle { } /** Проверяет, находится ли пользователь на cooldown для команды */ - public boolean isOnCooldown(String userId, String commandName) { + public boolean isOnCooldown(final String userId, final String commandName) { String key = userId + ":" + commandName; Instant cooldownEnd = cooldowns.get(key); @@ -37,7 +37,7 @@ public class CooldownManager implements Lifecycle { } /** Возвращает оставшееся время cooldown в секундах */ - public long getRemainingSeconds(String userId, String commandName) { + public long getRemainingSeconds(final String userId, final String commandName) { String key = userId + ":" + commandName; Instant cooldownEnd = cooldowns.get(key); @@ -50,7 +50,7 @@ public class CooldownManager implements Lifecycle { } /** Применяет cooldown для пользователя на команду */ - public void applyCooldown(String userId, String commandName, int seconds) { + public void applyCooldown(final String userId, final String commandName, final int seconds) { String key = userId + ":" + commandName; Instant cooldownEnd = Instant.now().plusSeconds(seconds); cooldowns.put(key, cooldownEnd); diff --git a/src/main/java/creator/loki/core/security/RateLimiter.java b/src/main/java/creator/loki/core/security/RateLimiter.java index f0dae47..cebe5cf 100644 --- a/src/main/java/creator/loki/core/security/RateLimiter.java +++ b/src/main/java/creator/loki/core/security/RateLimiter.java @@ -33,7 +33,7 @@ public class RateLimiter implements Lifecycle { } /** Проверяет, может ли пользователь выполнить действие */ - public boolean allowUser(String userId) { + public boolean allowUser(final String userId) { TokenBucket bucket = userBuckets.computeIfAbsent( userId, k -> new TokenBucket(DEFAULT_USER_CAPACITY, DEFAULT_USER_REFILL_RATE)); @@ -41,7 +41,7 @@ public class RateLimiter implements Lifecycle { } /** Проверяет, может ли гильдия выполнить действие */ - public boolean allowGuild(String guildId) { + public boolean allowGuild(final String guildId) { TokenBucket bucket = guildBuckets.computeIfAbsent( guildId, k -> new TokenBucket(DEFAULT_GUILD_CAPACITY, DEFAULT_GUILD_REFILL_RATE)); @@ -49,12 +49,12 @@ public class RateLimiter implements Lifecycle { } /** Проверяет оба лимита: пользователя и гильдии */ - public boolean allow(String userId, String guildId) { + public boolean allow(final String userId, final String guildId) { return allowUser(userId) && allowGuild(guildId); } /** Возвращает оставшееся время до восстановления для пользователя (в секундах) */ - public long getUserWaitTime(String userId) { + public long getUserWaitTime(final String userId) { TokenBucket bucket = userBuckets.get(userId); if (bucket == null) { return 0; diff --git a/src/main/java/creator/loki/database/Database.java b/src/main/java/creator/loki/database/Database.java index aee46d0..7a33191 100644 --- a/src/main/java/creator/loki/database/Database.java +++ b/src/main/java/creator/loki/database/Database.java @@ -40,7 +40,7 @@ public class Database implements Lifecycle { + config.getMaximumPoolSize() + ")"); - try (Connection conn = dataSource.getConnection(); + try (final Connection conn = dataSource.getConnection(); Statement stmt = conn.createStatement()) { stmt.execute("PRAGMA foreign_keys = ON"); } catch (SQLException e) { @@ -57,8 +57,8 @@ public class Database implements Lifecycle { } } - public void execute(String sql) { - try (Connection conn = getConnection(); + public void execute(final String sql) { + try (final Connection conn = getConnection(); Statement stmt = conn.createStatement()) { stmt.execute(sql); } catch (SQLException e) { @@ -67,7 +67,7 @@ public class Database implements Lifecycle { } } - public PreparedStatement prepare(String sql) { + public PreparedStatement prepare(final String sql) { Connection conn = null; try { conn = getConnection(); diff --git a/src/main/java/creator/loki/database/DatabaseMigration.java b/src/main/java/creator/loki/database/DatabaseMigration.java index d3da6fd..a0d0068 100644 --- a/src/main/java/creator/loki/database/DatabaseMigration.java +++ b/src/main/java/creator/loki/database/DatabaseMigration.java @@ -22,7 +22,7 @@ public class DatabaseMigration { this.database = database; } - public void migrateFromJson(String jsonPath) { + public void migrateFromJson(final String jsonPath) { LoggerDecorator.database(logger, "Начало миграции данных из JSON: " + jsonPath); if (!new java.io.File(jsonPath).exists()) { logger.info("No legacy data file found at {}, skipping migration", jsonPath); @@ -49,7 +49,7 @@ public class DatabaseMigration { } @SuppressWarnings("unchecked") - private Map parseJson(String path) { + private Map parseJson(final String path) { try (var reader = new InputStreamReader(new FileInputStream(path), UTF_8)) { var type = new TypeToken>() {}.getType(); return (Map) gson.fromJson(reader, type); @@ -60,7 +60,7 @@ public class DatabaseMigration { } @SuppressWarnings("unchecked") - private void migrateUserStats(Map data) { + private void migrateUserStats(final Map data) { var userStats = (Map) data.get("userStats"); if (userStats == null) return; LoggerDecorator.database(logger, "Миграция userStats: " + userStats.size() + " записей"); @@ -85,7 +85,7 @@ public class DatabaseMigration { } @SuppressWarnings("unchecked") - private void migrateReputation(Map data) { + private void migrateReputation(final Map data) { var reputation = (Map) data.get("reputation"); if (reputation == null) return; LoggerDecorator.database(logger, "Миграция reputation: " + reputation.size() + " записей"); @@ -103,7 +103,7 @@ public class DatabaseMigration { } @SuppressWarnings("unchecked") - private void migrateShipPairs(Map data) { + private void migrateShipPairs(final Map data) { var shipPairs = (Map) data.get("shipPairs"); if (shipPairs == null) return; LoggerDecorator.database(logger, "Миграция shipPairs: " + shipPairs.size() + " записей"); @@ -126,7 +126,7 @@ public class DatabaseMigration { } @SuppressWarnings("unchecked") - private void migrateCustomRoles(Map data) { + private void migrateCustomRoles(final Map data) { var customRoles = (Map) data.get("custom_roles"); if (customRoles == null) return; LoggerDecorator.database(logger, "Миграция custom_roles"); diff --git a/src/main/java/creator/loki/database/DatabaseModule.java b/src/main/java/creator/loki/database/DatabaseModule.java index ab1f939..f6f480b 100644 --- a/src/main/java/creator/loki/database/DatabaseModule.java +++ b/src/main/java/creator/loki/database/DatabaseModule.java @@ -15,7 +15,7 @@ import creator.loki.feature.ship.repository.ShipPairRepository; public class DatabaseModule extends AbstractModule { @Provides @Singleton - Database provideDatabase(BotConfig config) { + Database provideDatabase(final BotConfig config) { Database database = new Database(config.getDbPath()); database.connect(); new DatabaseSchema(database).createTables(); @@ -25,37 +25,37 @@ public class DatabaseModule extends AbstractModule { @Provides @Singleton - ConfigRepository provideConfigRepository(Database database) { + ConfigRepository provideConfigRepository(final Database database) { return new ConfigRepository(database); } @Provides @Singleton - GuildConfigRepository provideGuildConfigRepository(ConfigRepository cr) { + GuildConfigRepository provideGuildConfigRepository(final ConfigRepository cr) { return new PrefixedGuildConfigRepository(cr); } @Provides @Singleton - RatingsRepository provideRatingsRepository(Database database) { + RatingsRepository provideRatingsRepository(final Database database) { return new RatingsRepository(database); } @Provides @Singleton - ReputationRepository provideReputationRepository(Database database) { + ReputationRepository provideReputationRepository(final Database database) { return new ReputationRepository(database); } @Provides @Singleton - ShipPairRepository provideShipPairRepository(Database database) { + ShipPairRepository provideShipPairRepository(final Database database) { return new ShipPairRepository(database); } @Provides @Singleton - QueueRepository provideQueueRepository(Database database) { + QueueRepository provideQueueRepository(final Database database) { return new QueueRepository(database); } } diff --git a/src/main/java/creator/loki/database/schema/CoreTables.java b/src/main/java/creator/loki/database/schema/CoreTables.java index b30430f..2df97f3 100644 --- a/src/main/java/creator/loki/database/schema/CoreTables.java +++ b/src/main/java/creator/loki/database/schema/CoreTables.java @@ -4,7 +4,7 @@ import creator.loki.database.Database; public final class CoreTables { - public static void create(Database database) { + public static void create(final Database database) { createConfig(database); createUserStats(database); createReputation(database); @@ -12,7 +12,7 @@ public final class CoreTables { createIndexes(database); } - private static void createConfig(Database database) { + private static void createConfig(final Database database) { database.execute( """ CREATE TABLE IF NOT EXISTS config ( @@ -22,7 +22,7 @@ public final class CoreTables { """); } - private static void createUserStats(Database database) { + private static void createUserStats(final Database database) { database.execute( """ CREATE TABLE IF NOT EXISTS user_stats ( @@ -37,7 +37,7 @@ public final class CoreTables { """); } - private static void createReputation(Database database) { + private static void createReputation(final Database database) { database.execute( """ CREATE TABLE IF NOT EXISTS reputation ( @@ -47,7 +47,7 @@ public final class CoreTables { """); } - private static void createShipPairs(Database database) { + private static void createShipPairs(final Database database) { database.execute( """ CREATE TABLE IF NOT EXISTS ship_pairs ( @@ -59,7 +59,7 @@ public final class CoreTables { """); } - private static void createIndexes(Database database) { + private static void createIndexes(final Database database) { database.execute("CREATE INDEX IF NOT EXISTS idx_user_stats_level ON user_stats(level DESC)"); database.execute( "CREATE INDEX IF NOT EXISTS idx_user_stats_total_xp ON user_stats(total_xp DESC)"); diff --git a/src/main/java/creator/loki/database/schema/FeatureTables.java b/src/main/java/creator/loki/database/schema/FeatureTables.java index ce867b2..6f1b373 100644 --- a/src/main/java/creator/loki/database/schema/FeatureTables.java +++ b/src/main/java/creator/loki/database/schema/FeatureTables.java @@ -134,7 +134,7 @@ public final class FeatureTables { PRIMARY KEY (guild_id, user_id, rating_type) )"""; - public static void create(Database database) { + public static void create(final Database database) { database.execute(ECONOMY); database.execute(MUSIC_QUEUE); database.execute(WARNINGS); @@ -150,7 +150,7 @@ public final class FeatureTables { createIndexes(database); } - private static void createIndexes(Database database) { + private static void createIndexes(final Database database) { for (var sql : new String[] { "CREATE INDEX IF NOT EXISTS idx_ratings_guild_type ON ratings(guild_id, rating_type)", diff --git a/src/main/java/creator/loki/di/BotModule.java b/src/main/java/creator/loki/di/BotModule.java index 349231a..82e7467 100644 --- a/src/main/java/creator/loki/di/BotModule.java +++ b/src/main/java/creator/loki/di/BotModule.java @@ -80,11 +80,7 @@ public class BotModule extends AbstractModule { @Provides @Singleton - EventDispatcher provideEventDispatcher( - BotConfig config, - CommandRegistry registry, - RateLimiter rateLimiter, - MetricsCollector metrics) { + EventDispatcher provideEventDispatcher(final BotConfig config, final CommandRegistry registry, final RateLimiter rateLimiter, final MetricsCollector metrics) { return new EventDispatcher(config, registry, rateLimiter, metrics); } } diff --git a/src/main/java/creator/loki/embed/EmbedFactory.java b/src/main/java/creator/loki/embed/EmbedFactory.java index bacf779..0ece0a5 100644 --- a/src/main/java/creator/loki/embed/EmbedFactory.java +++ b/src/main/java/creator/loki/embed/EmbedFactory.java @@ -17,57 +17,57 @@ public class EmbedFactory { return new EmbedFactory(); } - public EmbedFactory withTitle(String title) { + public EmbedFactory withTitle(final String title) { builder.setTitle(title); return this; } - public EmbedFactory withDescription(String description) { + public EmbedFactory withDescription(final String description) { builder.setDescription(description); return this; } - public EmbedFactory withColor(Color color) { + public EmbedFactory withColor(final Color color) { builder.setColor(color); return this; } - public EmbedFactory addField(String name, String value, boolean inline) { + public EmbedFactory addField(final String name, final String value, final boolean inline) { builder.addField(name, value, inline); return this; } - public EmbedFactory withFooter(String text) { + public EmbedFactory withFooter(final String text) { builder.setFooter(text); return this; } - public EmbedFactory withFooter(String text, String iconUrl) { + public EmbedFactory withFooter(final String text, final String iconUrl) { builder.setFooter(text, iconUrl); return this; } - public EmbedFactory withThumbnail(String url) { + public EmbedFactory withThumbnail(final String url) { builder.setThumbnail(url); return this; } - public EmbedFactory withImage(String url) { + public EmbedFactory withImage(final String url) { builder.setImage(url); return this; } - public EmbedFactory withAuthor(String name) { + public EmbedFactory withAuthor(final String name) { builder.setAuthor(name); return this; } - public EmbedFactory withAuthor(String name, String url) { + public EmbedFactory withAuthor(final String name, final String url) { builder.setAuthor(name, url); return this; } - public EmbedFactory withAuthor(String name, String url, String iconUrl) { + public EmbedFactory withAuthor(final String name, final String url, final String iconUrl) { builder.setAuthor(name, url, iconUrl); return this; } diff --git a/src/main/java/creator/loki/embed/EmbedTemplates.java b/src/main/java/creator/loki/embed/EmbedTemplates.java index c177a4e..b08235f 100644 --- a/src/main/java/creator/loki/embed/EmbedTemplates.java +++ b/src/main/java/creator/loki/embed/EmbedTemplates.java @@ -12,7 +12,7 @@ public final class EmbedTemplates { // Запрет создания экземпляров } - public static MessageEmbed success(String title, String description) { + public static MessageEmbed success(final String title, final String description) { return new EmbedBuilder() .setColor(Color.GREEN) .setTitle("✅ " + title) @@ -21,7 +21,7 @@ public final class EmbedTemplates { .build(); } - public static MessageEmbed error(String title, String description) { + public static MessageEmbed error(final String title, final String description) { return new EmbedBuilder() .setColor(Color.RED) .setTitle("❌ " + title) @@ -30,7 +30,7 @@ public final class EmbedTemplates { .build(); } - public static MessageEmbed info(String title, String description) { + public static MessageEmbed info(final String title, final String description) { return new EmbedBuilder() .setColor(Color.CYAN) .setTitle("ℹ️ " + title) @@ -39,7 +39,7 @@ public final class EmbedTemplates { .build(); } - public static MessageEmbed warning(String title, String description) { + public static MessageEmbed warning(final String title, final String description) { return new EmbedBuilder() .setColor(Color.ORANGE) .setTitle("⚠️ " + title) diff --git a/src/main/java/creator/loki/embed/HelpCategories.java b/src/main/java/creator/loki/embed/HelpCategories.java index 487c441..d874074 100644 --- a/src/main/java/creator/loki/embed/HelpCategories.java +++ b/src/main/java/creator/loki/embed/HelpCategories.java @@ -69,20 +69,19 @@ public final class HelpCategories { private HelpCategories() {} - public static String getEmoji(String category) { + public static String getEmoji(final String category) { return EMOJIS.getOrDefault(category, "📌"); } - public static Color getColor(String category) { + public static Color getColor(final String category) { return COLORS.getOrDefault(category, new Color(88, 101, 242)); } - public static String getDescription(String category) { + public static String getDescription(final String category) { return DESCRIPTIONS.getOrDefault(category, "Команды категории"); } - public static boolean isCategoryVisible( - String category, boolean isAdmin, boolean isSuper, boolean isNsfwChannel) { + public static boolean isCategoryVisible(final String category, final boolean isAdmin, final boolean isSuper, final boolean isNsfwChannel) { if (CommandCategories.SETTINGS.equals(category) && !isAdmin) { return false; } diff --git a/src/main/java/creator/loki/feature/admin/commands/GenerateRatingsCommand.java b/src/main/java/creator/loki/feature/admin/commands/GenerateRatingsCommand.java index 7063a79..49475b9 100644 --- a/src/main/java/creator/loki/feature/admin/commands/GenerateRatingsCommand.java +++ b/src/main/java/creator/loki/feature/admin/commands/GenerateRatingsCommand.java @@ -46,7 +46,7 @@ public class GenerateRatingsCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!config.getSuperAdminId().equals(context.getAuthor().getUser().getId())) { context .getChannel() @@ -95,7 +95,7 @@ public class GenerateRatingsCommand implements Command { } } - private void generateRatingForUser(String guildId, String userId, String ratingType) { + private void generateRatingForUser(final String guildId, final String userId, final String ratingType) { if (ratingsRepository.hasRating(guildId, userId, ratingType)) return; var value = switch (ratingType) { @@ -110,7 +110,7 @@ public class GenerateRatingsCommand implements Command { ratingsRepository.setRating(guildId, userId, ratingType, value); } - private MessageEmbed errorEmbed(String title, String description) { + private MessageEmbed errorEmbed(final String title, final String description) { return EmbedFactory.create() .withTitle(title) .withDescription(description) @@ -118,7 +118,7 @@ public class GenerateRatingsCommand implements Command { .build(); } - private MessageEmbed warnEmbed(String title, String description) { + private MessageEmbed warnEmbed(final String title, final String description) { return EmbedFactory.create() .withTitle(title) .withDescription(description) @@ -126,7 +126,7 @@ public class GenerateRatingsCommand implements Command { .build(); } - private MessageEmbed successEmbed(CommandContext context, int memberCount, int generatedCount) { + private MessageEmbed successEmbed(final CommandContext context, final int memberCount, final int generatedCount) { return EmbedFactory.create() .withTitle("✅ Генерация завершена") .withDescription( diff --git a/src/main/java/creator/loki/feature/config/SetupSlashHandler.java b/src/main/java/creator/loki/feature/config/SetupSlashHandler.java index 8d16874..06fd48a 100644 --- a/src/main/java/creator/loki/feature/config/SetupSlashHandler.java +++ b/src/main/java/creator/loki/feature/config/SetupSlashHandler.java @@ -42,7 +42,7 @@ public class SetupSlashHandler extends ListenerAdapter { } @Override - public void onGuildReady(@NotNull GuildReadyEvent event) { + public void onGuildReady(@NotNull final GuildReadyEvent event) { if (registered) return; registered = true; event.getJDA().updateCommands() @@ -51,14 +51,14 @@ public class SetupSlashHandler extends ListenerAdapter { } @Override - public void onSlashCommandInteraction(@NotNull SlashCommandInteractionEvent event) { + public void onSlashCommandInteraction(@NotNull final SlashCommandInteractionEvent event) { if (!event.getName().equals("setup")) return; event.deferReply().queue(); showDashboard(event.getGuild(), event.getHook()); } @Override - public void onButtonInteraction(@NotNull ButtonInteractionEvent event) { + public void onButtonInteraction(@NotNull final ButtonInteractionEvent event) { String id = event.getComponentId(); if (!id.startsWith("setup_")) return; event.deferEdit().queue(); @@ -76,7 +76,7 @@ public class SetupSlashHandler extends ListenerAdapter { } @Override - public void onEntitySelectInteraction(@NotNull EntitySelectInteractionEvent event) { + public void onEntitySelectInteraction(@NotNull final EntitySelectInteractionEvent event) { String id = event.getComponentId(); if (!id.startsWith("setup_")) return; event.deferEdit().queue(); @@ -109,7 +109,7 @@ public class SetupSlashHandler extends ListenerAdapter { } @Override - public void onStringSelectInteraction(@NotNull StringSelectInteractionEvent event) { + public void onStringSelectInteraction(@NotNull final StringSelectInteractionEvent event) { String id = event.getComponentId(); if (!id.startsWith("setup_")) return; event.deferEdit().queue(); @@ -122,7 +122,7 @@ public class SetupSlashHandler extends ListenerAdapter { } @Override - public void onModalInteraction(@NotNull ModalInteractionEvent event) { + public void onModalInteraction(@NotNull final ModalInteractionEvent event) { String id = event.getModalId(); if (!id.startsWith("setup_")) return; event.deferEdit().queue(); @@ -143,13 +143,13 @@ public class SetupSlashHandler extends ListenerAdapter { } } - private void showDashboard(Guild guild, InteractionHook hook) { + private void showDashboard(Guild guild, final InteractionHook hook) { hook.editOriginalEmbeds(buildDashboardEmbed(guild).build()) .setComponents(buildDashboardButtons()) .queue(); } - private void showVoicePanel(Guild guild, InteractionHook hook) { + private void showVoicePanel(Guild guild, final InteractionHook hook) { EmbedBuilder embed = new EmbedBuilder() .setTitle("🎤 Настройка голосовых каналов") .setColor(BLURPLE); @@ -183,7 +183,7 @@ public class SetupSlashHandler extends ListenerAdapter { .queue(); } - private void showCounterPanel(Guild guild, InteractionHook hook) { + private void showCounterPanel(Guild guild, final InteractionHook hook) { EmbedBuilder embed = new EmbedBuilder() .setTitle("📊 Настройка счётчика участников") .setColor(BLURPLE); @@ -210,7 +210,7 @@ public class SetupSlashHandler extends ListenerAdapter { .queue(); } - private void showLoggingPanel(Guild guild, InteractionHook hook) { + private void showLoggingPanel(Guild guild, final InteractionHook hook) { EmbedBuilder embed = new EmbedBuilder() .setTitle("📝 Настройка логирования") .setColor(BLURPLE); @@ -235,7 +235,7 @@ public class SetupSlashHandler extends ListenerAdapter { .queue(); } - private void showLevelRolesPanel(Guild guild, InteractionHook hook) { + private void showLevelRolesPanel(Guild guild, final InteractionHook hook) { Map allConfig = configRepo.getAll(); var levelRoles = allConfig.entrySet().stream() .filter(e -> e.getKey().startsWith("level_role_")) @@ -269,7 +269,7 @@ public class SetupSlashHandler extends ListenerAdapter { .queue(); } - private void openCounterFormatModal(ButtonInteractionEvent event) { + private void openCounterFormatModal(final ButtonInteractionEvent event) { String currentFormat = configRepo.get("counter.format"); if (currentFormat == null) { currentFormat = "【👥】Участники: {count}"; @@ -288,7 +288,7 @@ public class SetupSlashHandler extends ListenerAdapter { event.replyModal(modal).queue(); } - private void openLevelRoleAddModal(ButtonInteractionEvent event) { + private void openLevelRoleAddModal(final ButtonInteractionEvent event) { TextInput levelInput = TextInput.create("level", TextInputStyle.SHORT) .setPlaceholder("10") .setRequired(true) @@ -306,7 +306,7 @@ public class SetupSlashHandler extends ListenerAdapter { event.replyModal(modal).queue(); } - private void openLevelRoleRemoveSelect(ButtonInteractionEvent event) { + private void openLevelRoleRemoveSelect(final ButtonInteractionEvent event) { Map allConfig = configRepo.getAll(); var options = allConfig.entrySet().stream() .filter(e -> e.getKey().startsWith("level_role_")) diff --git a/src/main/java/creator/loki/feature/config/repository/ConfigRepository.java b/src/main/java/creator/loki/feature/config/repository/ConfigRepository.java index 52a30a0..89bb846 100644 --- a/src/main/java/creator/loki/feature/config/repository/ConfigRepository.java +++ b/src/main/java/creator/loki/feature/config/repository/ConfigRepository.java @@ -21,7 +21,7 @@ public class ConfigRepository implements StringConfigStore { /** Получить значение конфигурации */ public String get(String key) { - try (PreparedStatement stmt = database.prepare("SELECT value FROM config WHERE key = ?")) { + try (final PreparedStatement stmt = database.prepare("SELECT value FROM config WHERE key = ?")) { stmt.setString(1, key); ResultSet rs = stmt.executeQuery(); @@ -36,8 +36,8 @@ public class ConfigRepository implements StringConfigStore { } /** Установить значение конфигурации */ - public void set(String key, String value) { - try (PreparedStatement stmt = + public void set(String key, final String value) { + try (final PreparedStatement stmt = database.prepare("INSERT OR REPLACE INTO config (key, value) VALUES (?, ?)")) { stmt.setString(1, key); stmt.setString(2, value); @@ -50,7 +50,7 @@ public class ConfigRepository implements StringConfigStore { public Map getAll() { Map result = new HashMap<>(); - try (PreparedStatement stmt = database.prepare("SELECT key, value FROM config")) { + try (final PreparedStatement stmt = database.prepare("SELECT key, value FROM config")) { ResultSet rs = stmt.executeQuery(); while (rs.next()) { result.put(rs.getString("key"), rs.getString("value")); @@ -63,7 +63,7 @@ public class ConfigRepository implements StringConfigStore { /** Удалить значение конфигурации */ public void delete(String key) { - try (PreparedStatement stmt = database.prepare("DELETE FROM config WHERE key = ?")) { + try (final PreparedStatement stmt = database.prepare("DELETE FROM config WHERE key = ?")) { stmt.setString(1, key); stmt.executeUpdate(); logger.info("Конфигурация удалена: {}", key); diff --git a/src/main/java/creator/loki/feature/config/repository/PrefixedGuildConfigRepository.java b/src/main/java/creator/loki/feature/config/repository/PrefixedGuildConfigRepository.java index f095fd5..373a5e1 100644 --- a/src/main/java/creator/loki/feature/config/repository/PrefixedGuildConfigRepository.java +++ b/src/main/java/creator/loki/feature/config/repository/PrefixedGuildConfigRepository.java @@ -12,22 +12,22 @@ public final class PrefixedGuildConfigRepository implements GuildConfigRepositor this.store = store; } - private static String storageKey(String guildId, String key) { + private static String storageKey(final String guildId, final String key) { return guildId + ":" + key; } @Override - public String get(String guildId, String key) { + public String get(final String guildId, final String key) { return store.get(storageKey(guildId, key)); } @Override - public void set(String guildId, String key, String value) { + public void set(final String guildId, final String key, final String value) { store.set(storageKey(guildId, key), value); } @Override - public void delete(String guildId, String key) { + public void delete(final String guildId, final String key) { store.delete(storageKey(guildId, key)); } } diff --git a/src/main/java/creator/loki/feature/counter/CounterModule.java b/src/main/java/creator/loki/feature/counter/CounterModule.java index a91ca91..276b3a7 100644 --- a/src/main/java/creator/loki/feature/counter/CounterModule.java +++ b/src/main/java/creator/loki/feature/counter/CounterModule.java @@ -15,14 +15,13 @@ public class CounterModule extends AbstractModule { @Provides @Singleton - CounterStatsRepository provideCounterStatsRepository(Database database) { + CounterStatsRepository provideCounterStatsRepository(final Database database) { return new CounterStatsRepository(database); } @Provides @Singleton - CounterManager provideCounterManager( - CounterStatsRepository statsRepo, ConfigRepository configRepo) { + CounterManager provideCounterManager(final CounterStatsRepository statsRepo, final ConfigRepository configRepo) { return new CounterManager(statsRepo, configRepo); } } diff --git a/src/main/java/creator/loki/feature/counter/repository/CounterStatsRepository.java b/src/main/java/creator/loki/feature/counter/repository/CounterStatsRepository.java index f053b99..3cf18ed 100644 --- a/src/main/java/creator/loki/feature/counter/repository/CounterStatsRepository.java +++ b/src/main/java/creator/loki/feature/counter/repository/CounterStatsRepository.java @@ -25,10 +25,10 @@ public class CounterStatsRepository { public DailyStats getStats(String date) { String sql = "SELECT * FROM counter_stats WHERE date = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, date); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { if (rs.next()) { DailyStats stats = new DailyStats(); stats.setDate(rs.getString("date")); @@ -70,7 +70,7 @@ public class CounterStatsRepository { difference = excluded.difference """; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, stats.getDate()); stmt.setInt(2, stats.getJoined()); stmt.setInt(3, stats.getLeft()); @@ -82,14 +82,14 @@ public class CounterStatsRepository { } /** Получить историю за последние N дней */ - public List getHistory(int days) { + public List getHistory(final int days) { List history = new ArrayList<>(); String sql = "SELECT * FROM counter_stats ORDER BY date DESC LIMIT ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setInt(1, days); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { while (rs.next()) { DailyStats stats = new DailyStats(); stats.setDate(rs.getString("date")); @@ -107,14 +107,14 @@ public class CounterStatsRepository { } /** Удалить старую статистику (старше N дней) */ - public void cleanOldStats(int daysToKeep) { + public void cleanOldStats(final int daysToKeep) { String sql = """ DELETE FROM counter_stats WHERE date < date('now', '-' || ? || ' days') """; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setInt(1, daysToKeep); int deleted = stmt.executeUpdate(); if (deleted > 0) { diff --git a/src/main/java/creator/loki/feature/counter/service/CounterManager.java b/src/main/java/creator/loki/feature/counter/service/CounterManager.java index 3a79140..ec15658 100644 --- a/src/main/java/creator/loki/feature/counter/service/CounterManager.java +++ b/src/main/java/creator/loki/feature/counter/service/CounterManager.java @@ -62,7 +62,7 @@ public class CounterManager { } /** Обновить счетчик участников */ - public void updateCounter(Guild guild) { + public void updateCounter(final Guild guild) { if (counterChannelId == null || counterChannelId.isEmpty()) { return; } @@ -88,7 +88,7 @@ public class CounterManager { } /** Получить историю статистики */ - public List getHistory(int days) { + public List getHistory(final int days) { return statsRepo.getHistory(days); } diff --git a/src/main/java/creator/loki/feature/counter/service/CounterSetupPrefixCommand.java b/src/main/java/creator/loki/feature/counter/service/CounterSetupPrefixCommand.java index 9799b49..dfcc61a 100644 --- a/src/main/java/creator/loki/feature/counter/service/CounterSetupPrefixCommand.java +++ b/src/main/java/creator/loki/feature/counter/service/CounterSetupPrefixCommand.java @@ -41,7 +41,7 @@ public class CounterSetupPrefixCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!context.getAuthor().hasPermission(Permission.ADMINISTRATOR)) { context.getChannel().sendMessage("❌ У вас нет прав администратора!").queue(); return; @@ -61,7 +61,7 @@ public class CounterSetupPrefixCommand implements Command { } } - private void handleChannel(CommandContext context, List args) { + private void handleChannel(final CommandContext context, final List args) { if (args.size() < 2) { context .getChannel() @@ -98,7 +98,7 @@ public class CounterSetupPrefixCommand implements Command { CounterConfigFormatter.sendChannelSetConfirmation(channel, memberCount, context.getChannel()); } - private void handleFormat(CommandContext context, List args) { + private void handleFormat(final CommandContext context, final List args) { if (args.size() < 2) { context .getChannel() @@ -130,7 +130,7 @@ public class CounterSetupPrefixCommand implements Command { CounterConfigFormatter.sendFormatUpdated(format, context.getChannel()); } - private void handleInfo(CommandContext context) { + private void handleInfo(final CommandContext context) { String channelId = configRepo.get("counter.channel_id"); String format = configRepo.get("counter.format"); CounterConfigFormatter.sendInfo(context.getGuild(), channelId, format, context.getChannel()); diff --git a/src/main/java/creator/loki/feature/counter/service/format/CounterConfigFormatter.java b/src/main/java/creator/loki/feature/counter/service/format/CounterConfigFormatter.java index 07c3882..881fc7c 100644 --- a/src/main/java/creator/loki/feature/counter/service/format/CounterConfigFormatter.java +++ b/src/main/java/creator/loki/feature/counter/service/format/CounterConfigFormatter.java @@ -6,10 +6,7 @@ import creator.loki.embed.EmbedFactory; public class CounterConfigFormatter { - public static void sendChannelSetConfirmation( - net.dv8tion.jda.api.entities.channel.concrete.VoiceChannel channel, - int memberCount, - net.dv8tion.jda.api.entities.channel.middleman.MessageChannel textChannel) { + public static void sendChannelSetConfirmation(final net.dv8tion.jda.api.entities.channel.concrete.VoiceChannel channel, final int memberCount, final net.dv8tion.jda.api.entities.channel.middleman.MessageChannel textChannel) { textChannel .sendMessageEmbeds( EmbedFactory.create() @@ -22,8 +19,7 @@ public class CounterConfigFormatter { .queue(); } - public static void sendFormatUpdated( - String format, net.dv8tion.jda.api.entities.channel.middleman.MessageChannel channel) { + public static void sendFormatUpdated(final String format, final net.dv8tion.jda.api.entities.channel.middleman.MessageChannel channel) { channel .sendMessageEmbeds( EmbedFactory.create() @@ -35,11 +31,7 @@ public class CounterConfigFormatter { .queue(); } - public static void sendInfo( - net.dv8tion.jda.api.entities.Guild guild, - String channelId, - String format, - net.dv8tion.jda.api.entities.channel.middleman.MessageChannel channel) { + public static void sendInfo(final net.dv8tion.jda.api.entities.Guild guild, final String channelId, final String format, final net.dv8tion.jda.api.entities.channel.middleman.MessageChannel channel) { var embed = EmbedFactory.create() .withTitle("📊 Конфигурация счетчика участников") @@ -59,8 +51,7 @@ public class CounterConfigFormatter { channel.sendMessageEmbeds(embed.build()).queue(); } - public static void sendHelp( - net.dv8tion.jda.api.entities.channel.middleman.MessageChannel channel) { + public static void sendHelp(final net.dv8tion.jda.api.entities.channel.middleman.MessageChannel channel) { channel .sendMessageEmbeds( EmbedFactory.create() diff --git a/src/main/java/creator/loki/feature/counter/service/listener/MemberCounterListener.java b/src/main/java/creator/loki/feature/counter/service/listener/MemberCounterListener.java index 6c77c1a..a51994d 100644 --- a/src/main/java/creator/loki/feature/counter/service/listener/MemberCounterListener.java +++ b/src/main/java/creator/loki/feature/counter/service/listener/MemberCounterListener.java @@ -50,7 +50,7 @@ public class MemberCounterListener extends ListenerAdapter implements Lifecycle } @Override - public void onGuildMemberJoin(GuildMemberJoinEvent event) { + public void onGuildMemberJoin(final GuildMemberJoinEvent event) { // Игнорируем ботов if (event.getUser().isBot()) { return; @@ -64,7 +64,7 @@ public class MemberCounterListener extends ListenerAdapter implements Lifecycle } @Override - public void onGuildMemberRemove(GuildMemberRemoveEvent event) { + public void onGuildMemberRemove(final GuildMemberRemoveEvent event) { // Игнорируем ботов if (event.getUser().isBot()) { return; diff --git a/src/main/java/creator/loki/feature/economy/EconomyCommandRegistrar.java b/src/main/java/creator/loki/feature/economy/EconomyCommandRegistrar.java index 4ed7ba4..56e5d2d 100644 --- a/src/main/java/creator/loki/feature/economy/EconomyCommandRegistrar.java +++ b/src/main/java/creator/loki/feature/economy/EconomyCommandRegistrar.java @@ -46,7 +46,7 @@ public class EconomyCommandRegistrar implements CommandRegistrar { } @Override - public void register(CommandRegistry registry) { + public void register(final CommandRegistry registry) { registry.register(new BalanceCommand(economyService)); registry.register(new BaltopCommand(economyService)); registry.register(new PayCommand(economyService)); diff --git a/src/main/java/creator/loki/feature/economy/EconomyModule.java b/src/main/java/creator/loki/feature/economy/EconomyModule.java index 103efce..d61157f 100644 --- a/src/main/java/creator/loki/feature/economy/EconomyModule.java +++ b/src/main/java/creator/loki/feature/economy/EconomyModule.java @@ -26,44 +26,43 @@ public class EconomyModule extends AbstractModule { @Provides @Singleton - EconomyRepository provideEconomyRepository(Database database) { + EconomyRepository provideEconomyRepository(final Database database) { return new SqlEconomyRepository(database); } @Provides @Singleton - EconomyService provideEconomyService( - EconomyRepository repository, CooldownManager cooldownManager) { + EconomyService provideEconomyService(final EconomyRepository repository, final CooldownManager cooldownManager) { return new EconomyService(repository, cooldownManager); } @Provides @Singleton - FishingService provideFishingService(EconomyRepository repository) { + FishingService provideFishingService(final EconomyRepository repository) { return new FishingService(repository); } @Provides @Singleton - BlackjackService provideBlackjackService(EconomyRepository repository) { + BlackjackService provideBlackjackService(final EconomyRepository repository) { return new BlackjackService(repository); } @Provides @Singleton - SlotService provideSlotService(EconomyRepository repository) { + SlotService provideSlotService(final EconomyRepository repository) { return new SlotService(repository); } @Provides @Singleton - JobService provideJobService(EconomyRepository repository) { + JobService provideJobService(final EconomyRepository repository) { return new JobService(repository); } @Provides @Singleton - FishMessageListener provideFishMessageListener(FishingService fishingService) { + FishMessageListener provideFishMessageListener(final FishingService fishingService) { return new FishMessageListener(fishingService); } } diff --git a/src/main/java/creator/loki/feature/economy/FishMessageListener.java b/src/main/java/creator/loki/feature/economy/FishMessageListener.java index b731c8e..a4eef19 100644 --- a/src/main/java/creator/loki/feature/economy/FishMessageListener.java +++ b/src/main/java/creator/loki/feature/economy/FishMessageListener.java @@ -21,7 +21,7 @@ public class FishMessageListener extends ListenerAdapter { } @Override - public void onMessageReceived(@NotNull MessageReceivedEvent event) { + public void onMessageReceived(@NotNull final MessageReceivedEvent event) { if (event.getAuthor().isBot()) return; String content = event.getMessage().getContentRaw().trim(); diff --git a/src/main/java/creator/loki/feature/economy/command/bank/BankCommand.java b/src/main/java/creator/loki/feature/economy/command/bank/BankCommand.java index 5c696ef..a2d6da9 100644 --- a/src/main/java/creator/loki/feature/economy/command/bank/BankCommand.java +++ b/src/main/java/creator/loki/feature/economy/command/bank/BankCommand.java @@ -39,7 +39,7 @@ public class BankCommand implements Command { } @Override - public void execute(CommandContext ctx) { + public void execute(final CommandContext ctx) { List args = ctx.getArgs(); String uid = ctx.getAuthor().getId(); if (args.isEmpty() || args.get(0).equalsIgnoreCase("balance")) { diff --git a/src/main/java/creator/loki/feature/economy/command/core/BalanceCommand.java b/src/main/java/creator/loki/feature/economy/command/core/BalanceCommand.java index aeb9dbc..f36dc89 100644 --- a/src/main/java/creator/loki/feature/economy/command/core/BalanceCommand.java +++ b/src/main/java/creator/loki/feature/economy/command/core/BalanceCommand.java @@ -39,7 +39,7 @@ public class BalanceCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { List mentioned = context.getMessage().getMentions().getMembers(); Member target = mentioned.isEmpty() ? context.getAuthor() : mentioned.get(0); diff --git a/src/main/java/creator/loki/feature/economy/command/core/BaltopCommand.java b/src/main/java/creator/loki/feature/economy/command/core/BaltopCommand.java index a57f794..82939f4 100644 --- a/src/main/java/creator/loki/feature/economy/command/core/BaltopCommand.java +++ b/src/main/java/creator/loki/feature/economy/command/core/BaltopCommand.java @@ -33,7 +33,7 @@ public class BaltopCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { List top = economyService.getTopBalances(10); StringBuilder sb = new StringBuilder(); diff --git a/src/main/java/creator/loki/feature/economy/command/core/DailyCommand.java b/src/main/java/creator/loki/feature/economy/command/core/DailyCommand.java index 49256e7..a53fabe 100644 --- a/src/main/java/creator/loki/feature/economy/command/core/DailyCommand.java +++ b/src/main/java/creator/loki/feature/economy/command/core/DailyCommand.java @@ -32,7 +32,7 @@ public class DailyCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { EconomyService.DailyResult result = economyService.claimDaily(context.getAuthor().getId()); if (result == null) { diff --git a/src/main/java/creator/loki/feature/economy/command/core/PayCommand.java b/src/main/java/creator/loki/feature/economy/command/core/PayCommand.java index 25bc0c4..2e34595 100644 --- a/src/main/java/creator/loki/feature/economy/command/core/PayCommand.java +++ b/src/main/java/creator/loki/feature/economy/command/core/PayCommand.java @@ -37,7 +37,7 @@ public class PayCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { List mentioned = context.getMessage().getMentions().getMembers(); if (mentioned.isEmpty()) { context diff --git a/src/main/java/creator/loki/feature/economy/command/job/JobCommand.java b/src/main/java/creator/loki/feature/economy/command/job/JobCommand.java index 8dc9cf7..229e618 100644 --- a/src/main/java/creator/loki/feature/economy/command/job/JobCommand.java +++ b/src/main/java/creator/loki/feature/economy/command/job/JobCommand.java @@ -39,7 +39,7 @@ public class JobCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { var args = context.getArgs(); var userId = context.getAuthor().getId(); @@ -67,7 +67,7 @@ public class JobCommand implements Command { } } - private void handleCurrent(CommandContext context, String userId) { + private void handleCurrent(final CommandContext context, final String userId) { String current = jobService.getCurrentJob(userId); if (current == null) { context @@ -102,7 +102,7 @@ public class JobCommand implements Command { .queue(); } - private void handleList(CommandContext context) { + private void handleList(final CommandContext context) { var jobs = jobService.listJobs(); var desc = new StringBuilder(); @@ -131,7 +131,7 @@ public class JobCommand implements Command { .queue(); } - private void handleJoin(CommandContext context, String userId, String name) { + private void handleJoin(final CommandContext context, final String userId, final String name) { var jobs = jobService.listJobs(); JobService.JobInfo target = null; @@ -168,7 +168,7 @@ public class JobCommand implements Command { .queue(); } - private JobService.JobInfo findJob(String name) { + private JobService.JobInfo findJob(final String name) { for (var job : jobService.listJobs()) { if (job.name().equalsIgnoreCase(name) || job.displayName().equalsIgnoreCase(name)) { return job; diff --git a/src/main/java/creator/loki/feature/economy/command/job/WorkCommand.java b/src/main/java/creator/loki/feature/economy/command/job/WorkCommand.java index d88275f..21ec508 100644 --- a/src/main/java/creator/loki/feature/economy/command/job/WorkCommand.java +++ b/src/main/java/creator/loki/feature/economy/command/job/WorkCommand.java @@ -34,7 +34,7 @@ public class WorkCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { var userId = context.getAuthor().getId(); String currentJob = jobService.getCurrentJob(userId); @@ -77,7 +77,7 @@ public class WorkCommand implements Command { .queue(); } - private JobService.JobInfo findJob(String name) { + private JobService.JobInfo findJob(final String name) { for (var job : jobService.listJobs()) { if (job.name().equalsIgnoreCase(name) || job.displayName().equalsIgnoreCase(name)) { return job; diff --git a/src/main/java/creator/loki/feature/economy/command/minigame/BlackjackCommand.java b/src/main/java/creator/loki/feature/economy/command/minigame/BlackjackCommand.java index b68581d..0c13be1 100644 --- a/src/main/java/creator/loki/feature/economy/command/minigame/BlackjackCommand.java +++ b/src/main/java/creator/loki/feature/economy/command/minigame/BlackjackCommand.java @@ -45,7 +45,7 @@ public class BlackjackCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { var args = context.getArgs(); var userId = context.getAuthor().getId(); if (args.isEmpty()) { @@ -66,7 +66,7 @@ public class BlackjackCommand implements Command { } } - private void handleStart(CommandContext context, String userId, String betStr) { + private void handleStart(final CommandContext context, final String userId, final String betStr) { if (activeGames.contains(userId)) { context .getChannel() @@ -110,7 +110,7 @@ public class BlackjackCommand implements Command { context.getChannel().sendMessageEmbeds(buildGameEmbed(state)).queue(); } - private void handleAction(CommandContext context, String userId, boolean isHit) { + private void handleAction(final CommandContext context, final String userId, final boolean isHit) { if (!activeGames.contains(userId)) { context .getChannel() @@ -125,7 +125,7 @@ public class BlackjackCommand implements Command { context.getChannel().sendMessageEmbeds(buildGameEmbed(state)).queue(); } - private MessageEmbed buildGameEmbed(BlackjackService.BlackjackState state) { + private MessageEmbed buildGameEmbed(final BlackjackService.BlackjackState state) { var embed = EmbedFactory.create() .withTitle("🃏 Блэкджек") @@ -143,17 +143,17 @@ public class BlackjackCommand implements Command { return embed.addField("Ставка", state.bet() + " LC", false).build(); } - private String formatCards(String[] cards, int sum) { + private String formatCards(final String[] cards, final int sum) { return String.join(" + ", cards) + " = " + sum; } - private String formatHiddenDealerCards(String[] cards) { + private String formatHiddenDealerCards(final String[] cards) { var sb = new StringBuilder("?"); for (int i = 1; i < cards.length; i++) sb.append(" + ").append(cards[i]); return sb.toString(); } - private String formatResult(BlackjackService.BlackjackState state) { + private String formatResult(final BlackjackService.BlackjackState state) { long payout = state.payout(); if (payout > state.bet()) return "🎉 Блэкджек! +" + payout + " LC"; if (payout > 0) return "✅ Ты выиграл +" + payout + " LC"; diff --git a/src/main/java/creator/loki/feature/economy/command/minigame/FishCommand.java b/src/main/java/creator/loki/feature/economy/command/minigame/FishCommand.java index deb0890..164f379 100644 --- a/src/main/java/creator/loki/feature/economy/command/minigame/FishCommand.java +++ b/src/main/java/creator/loki/feature/economy/command/minigame/FishCommand.java @@ -38,7 +38,7 @@ public class FishCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { var args = context.getArgs(); var userId = context.getAuthor().getId(); diff --git a/src/main/java/creator/loki/feature/economy/command/minigame/SlotCommand.java b/src/main/java/creator/loki/feature/economy/command/minigame/SlotCommand.java index dfbfe1f..ea18296 100644 --- a/src/main/java/creator/loki/feature/economy/command/minigame/SlotCommand.java +++ b/src/main/java/creator/loki/feature/economy/command/minigame/SlotCommand.java @@ -41,7 +41,7 @@ public class SlotCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { var args = context.getArgs(); var userId = context.getAuthor().getId(); diff --git a/src/main/java/creator/loki/feature/economy/command/social/RobCommand.java b/src/main/java/creator/loki/feature/economy/command/social/RobCommand.java index dd6010e..70e94c3 100644 --- a/src/main/java/creator/loki/feature/economy/command/social/RobCommand.java +++ b/src/main/java/creator/loki/feature/economy/command/social/RobCommand.java @@ -46,7 +46,7 @@ public class RobCommand implements Command { } @Override - public void execute(CommandContext ctx) { + public void execute(final CommandContext ctx) { List mentioned = ctx.getMessage().getMentions().getMembers(); if (mentioned.isEmpty()) { ctx.getChannel() diff --git a/src/main/java/creator/loki/feature/economy/domain/EconomyAccount.java b/src/main/java/creator/loki/feature/economy/domain/EconomyAccount.java index 9f6130d..81b6d13 100644 --- a/src/main/java/creator/loki/feature/economy/domain/EconomyAccount.java +++ b/src/main/java/creator/loki/feature/economy/domain/EconomyAccount.java @@ -31,7 +31,7 @@ public class EconomyAccount { this.lastWork = null; } - EconomyAccount(EconomyAccountBuilder builder) { + EconomyAccount(final EconomyAccountBuilder builder) { this.userId = builder.userId; this.cash = builder.cash; this.bank = builder.bank; @@ -98,27 +98,27 @@ public class EconomyAccount { return cash + bank; } - public EconomyAccount withCash(long cash) { + public EconomyAccount withCash(final long cash) { return new EconomyAccountBuilder(this).cash(cash).build(); } - public EconomyAccount withBank(long bank) { + public EconomyAccount withBank(final long bank) { return new EconomyAccountBuilder(this).bank(bank).build(); } - public EconomyAccount withAddedEarned(long amount) { + public EconomyAccount withAddedEarned(final long amount) { return new EconomyAccountBuilder(this).totalEarned(this.totalEarned + amount).build(); } - public EconomyAccount withAddedSpent(long amount) { + public EconomyAccount withAddedSpent(final long amount) { return new EconomyAccountBuilder(this).totalSpent(this.totalSpent + amount).build(); } - public EconomyAccount withFishingLuck(int level) { + public EconomyAccount withFishingLuck(final int level) { return new EconomyAccountBuilder(this).fishingLuck(level).build(); } - public EconomyAccount withEfficiency(int level) { + public EconomyAccount withEfficiency(final int level) { return new EconomyAccountBuilder(this).efficiency(level).build(); } diff --git a/src/main/java/creator/loki/feature/economy/domain/EconomyAccountBuilder.java b/src/main/java/creator/loki/feature/economy/domain/EconomyAccountBuilder.java index eb204f6..3914bcb 100644 --- a/src/main/java/creator/loki/feature/economy/domain/EconomyAccountBuilder.java +++ b/src/main/java/creator/loki/feature/economy/domain/EconomyAccountBuilder.java @@ -16,7 +16,7 @@ public class EconomyAccountBuilder { public EconomyAccountBuilder() {} - public EconomyAccountBuilder(EconomyAccount existing) { + public EconomyAccountBuilder(final EconomyAccount existing) { this.userId = existing.getUserId(); this.cash = existing.getCash(); this.bank = existing.getBank(); diff --git a/src/main/java/creator/loki/feature/economy/domain/Job.java b/src/main/java/creator/loki/feature/economy/domain/Job.java index 156b7d4..dc59b83 100644 --- a/src/main/java/creator/loki/feature/economy/domain/Job.java +++ b/src/main/java/creator/loki/feature/economy/domain/Job.java @@ -42,7 +42,7 @@ public enum Job { return emoji; } - public static Job fromName(String name) { + public static Job fromName(final String name) { for (Job j : values()) { if (j.name().equalsIgnoreCase(name) || j.getDisplayName().equalsIgnoreCase(name)) { return j; diff --git a/src/main/java/creator/loki/feature/economy/domain/SlotCombination.java b/src/main/java/creator/loki/feature/economy/domain/SlotCombination.java index 6f99898..42c86de 100644 --- a/src/main/java/creator/loki/feature/economy/domain/SlotCombination.java +++ b/src/main/java/creator/loki/feature/economy/domain/SlotCombination.java @@ -29,7 +29,7 @@ public enum SlotCombination { return chance; } - public static SlotCombination match(String e1, String e2, String e3) { + public static SlotCombination match(final String e1, final String e2, final String e3) { if (!e1.equals(e2) || !e2.equals(e3)) return null; for (SlotCombination sc : values()) { if (sc.emojis[0].equals(e1)) return sc; diff --git a/src/main/java/creator/loki/feature/economy/repository/EconomyRepository.java b/src/main/java/creator/loki/feature/economy/repository/EconomyRepository.java index fb8c26c..6405ce7 100644 --- a/src/main/java/creator/loki/feature/economy/repository/EconomyRepository.java +++ b/src/main/java/creator/loki/feature/economy/repository/EconomyRepository.java @@ -6,15 +6,15 @@ import java.util.Optional; import creator.loki.feature.economy.domain.EconomyAccount; public interface EconomyRepository { - Optional findById(String userId); + Optional findById(final String userId); - void save(EconomyAccount account); + void save(final EconomyAccount account); - boolean exists(String userId); + boolean exists(final String userId); - List findTopByBalance(int limit); + List findTopByBalance(final int limit); - default EconomyAccount getAccount(String userId) { + default EconomyAccount getAccount(final String userId) { return findById(userId).orElse(new EconomyAccount(userId)); } } diff --git a/src/main/java/creator/loki/feature/economy/repository/SqlEconomyRepository.java b/src/main/java/creator/loki/feature/economy/repository/SqlEconomyRepository.java index c1de989..606e965 100644 --- a/src/main/java/creator/loki/feature/economy/repository/SqlEconomyRepository.java +++ b/src/main/java/creator/loki/feature/economy/repository/SqlEconomyRepository.java @@ -43,7 +43,7 @@ public class SqlEconomyRepository implements EconomyRepository { + "job = excluded.job, last_work = excluded.last_work"; } - private static void setNullableString(PreparedStatement stmt, int index, String value) + private static void setNullableString(PreparedStatement stmt, final int index, final String value) throws SQLException { if (value != null) { stmt.setString(index, value); @@ -53,7 +53,7 @@ public class SqlEconomyRepository implements EconomyRepository { } @Override - public Optional findById(String userId) { + public Optional findById(final String userId) { var sql = selectSql(); try (var stmt = database.prepare(sql)) { stmt.setString(1, userId); @@ -69,7 +69,7 @@ public class SqlEconomyRepository implements EconomyRepository { } @Override - public void save(EconomyAccount account) { + public void save(final EconomyAccount account) { var sql = upsertSql(); try (var stmt = database.prepare(sql)) { stmt.setString(1, account.getUserId()); @@ -91,7 +91,7 @@ public class SqlEconomyRepository implements EconomyRepository { } @Override - public boolean exists(String userId) { + public boolean exists(final String userId) { var sql = "SELECT 1 FROM economy WHERE user_id = ?"; try (var stmt = database.prepare(sql)) { stmt.setString(1, userId); @@ -105,7 +105,7 @@ public class SqlEconomyRepository implements EconomyRepository { } @Override - public List findTopByBalance(int limit) { + public List findTopByBalance(final int limit) { var lim = clampLimit(limit); var sql = "SELECT " @@ -125,12 +125,12 @@ public class SqlEconomyRepository implements EconomyRepository { return Collections.unmodifiableList(list); } - private static int clampLimit(int limit) { + private static int clampLimit(final int limit) { if (limit <= 0) return 1; return Math.min(limit, MAX_TOP); } - private EconomyAccount mapResultSetToAccount(ResultSet rs) throws SQLException { + private EconomyAccount mapResultSetToAccount(final ResultSet rs) throws SQLException { return new EconomyAccountBuilder() .userId(rs.getString("user_id")) .cash(rs.getLong("cash")) diff --git a/src/main/java/creator/loki/feature/economy/service/EconomyService.java b/src/main/java/creator/loki/feature/economy/service/EconomyService.java index c0aee2a..d958615 100644 --- a/src/main/java/creator/loki/feature/economy/service/EconomyService.java +++ b/src/main/java/creator/loki/feature/economy/service/EconomyService.java @@ -22,11 +22,11 @@ public class EconomyService { this.cooldownManager = cooldownManager; } - public EconomyAccount getAccount(String userId) { + public EconomyAccount getAccount(final String userId) { return repository.getAccount(userId); } - public boolean transfer(String fromId, String toId, long amount) { + public boolean transfer(final String fromId, final String toId, long amount) { if (amount <= 0) return false; EconomyAccount from = repository.getAccount(fromId); if (from.getCash() < amount) return false; @@ -36,7 +36,7 @@ public class EconomyService { return true; } - public boolean deposit(String userId, long amount) { + public boolean deposit(final String userId, long amount) { if (amount <= 0) return false; EconomyAccount account = repository.getAccount(userId); if (account.getCash() < amount) return false; @@ -45,7 +45,7 @@ public class EconomyService { return true; } - public boolean withdraw(String userId, long amount) { + public boolean withdraw(final String userId, long amount) { if (amount <= 0) return false; EconomyAccount account = repository.getAccount(userId); if (account.getBank() < amount) return false; @@ -54,14 +54,14 @@ public class EconomyService { return true; } - public long earnCash(String userId, long amount) { + public long earnCash(final String userId, long amount) { EconomyAccount account = repository.getAccount(userId); EconomyAccount updated = account.withCash(account.getCash() + amount).withAddedEarned(amount); repository.save(updated); return updated.getCash(); } - public boolean spendCash(String userId, long amount) { + public boolean spendCash(final String userId, long amount) { if (amount <= 0) return false; EconomyAccount account = repository.getAccount(userId); if (account.getCash() < amount) return false; @@ -69,7 +69,7 @@ public class EconomyService { return true; } - public DailyResult claimDaily(String userId) { + public DailyResult claimDaily(final String userId) { EconomyAccount account = repository.getAccount(userId); String today = LocalDate.now().toString(); if (today.equals(account.getLastDaily())) return null; @@ -93,7 +93,7 @@ public class EconomyService { return new DailyResult(amount, streak, newCash); } - public int upgradeFishingLuck(String userId) { + public int upgradeFishingLuck(final String userId) { EconomyAccount account = repository.getAccount(userId); if (account.getFishingLuck() >= 5) return -1; long cost = 800L * (account.getFishingLuck() + 1); @@ -104,7 +104,7 @@ public class EconomyService { return newLevel; } - public int upgradeEfficiency(String userId) { + public int upgradeEfficiency(final String userId) { EconomyAccount account = repository.getAccount(userId); if (account.getEfficiency() >= 5) return -1; long cost = 800L * (account.getEfficiency() + 1); @@ -115,7 +115,7 @@ public class EconomyService { return newLevel; } - public List getTopBalances(int limit) { + public List getTopBalances(final int limit) { return repository.findTopByBalance(limit); } diff --git a/src/main/java/creator/loki/feature/economy/service/FishingService.java b/src/main/java/creator/loki/feature/economy/service/FishingService.java index 6aea71a..562ff5c 100644 --- a/src/main/java/creator/loki/feature/economy/service/FishingService.java +++ b/src/main/java/creator/loki/feature/economy/service/FishingService.java @@ -30,7 +30,7 @@ public class FishingService { private record ActiveFish( String targetFish, int correctCount, long startTime, String difficulty, String[] grid) {} - public FishResult startFishing(String userId, String difficulty) { + public FishResult startFishing(final String userId, final String difficulty) { EconomyAccount account = repository.getAccount(userId); if (account.getLastFish() != null) { long elapsed = System.currentTimeMillis() - Long.parseLong(account.getLastFish()); @@ -98,13 +98,13 @@ public class FishingService { return new FishResult(rows, targetFish, correctCount, 0, account.getCash()); } - public FishResult checkAnswer(String userId, int answer) { + public FishResult checkAnswer(final String userId, int answer) { ActiveFish session = activeFishing.get(userId); if (session == null) return null; return checkAnswer(userId, answer, session.startTime(), session.difficulty()); } - public FishResult checkAnswer(String userId, int answer, long startTime, String difficulty) { + public FishResult checkAnswer(final String userId, int answer, final long startTime, final String difficulty) { ActiveFish session = activeFishing.remove(userId); if (session == null) return null; if (session.startTime() != startTime || !session.difficulty().equals(difficulty)) return null; diff --git a/src/main/java/creator/loki/feature/economy/service/game/BlackjackService.java b/src/main/java/creator/loki/feature/economy/service/game/BlackjackService.java index accfb0c..f4db501 100644 --- a/src/main/java/creator/loki/feature/economy/service/game/BlackjackService.java +++ b/src/main/java/creator/loki/feature/economy/service/game/BlackjackService.java @@ -27,7 +27,7 @@ public class BlackjackService { private record ActiveBlackjack( List playerCards, List dealerCards, long bet, String userId) {} - public BlackjackState startGame(String userId, long bet) { + public BlackjackState startGame(final String userId, final long bet) { if (bet <= 0 || activeGames.containsKey(userId)) return null; var account = repository.getAccount(userId); if (account.getCash() < bet) return null; @@ -52,7 +52,7 @@ public class BlackjackService { return buildState(playerCards, dealerCards, playerSum, dealerSum, bet, false, 0); } - public BlackjackState hit(String userId) { + public BlackjackState hit(final String userId) { var game = activeGames.get(userId); if (game == null) return null; @@ -72,7 +72,7 @@ public class BlackjackService { 0); } - public BlackjackState stand(String userId) { + public BlackjackState stand(final String userId) { var game = activeGames.remove(userId); if (game == null) return null; @@ -91,7 +91,7 @@ public class BlackjackService { game.playerCards(), dealerCards, playerSum, dealerSum, game.bet(), true, payout); } - private void creditUser(String userId, long amount) { + private void creditUser(final String userId, final long amount) { if (amount <= 0) return; var account = repository.getAccount(userId); repository.save(account.withCash(account.getCash() + amount)); @@ -101,7 +101,7 @@ public class BlackjackService { return DECK[ThreadLocalRandom.current().nextInt(DECK.length)]; } - private int calculateSum(List cards) { + private int calculateSum(final List cards) { var sum = 0; var aces = 0; for (var c : cards) { @@ -121,14 +121,7 @@ public class BlackjackService { return sum; } - private BlackjackState buildState( - List playerCards, - List dealerCards, - int playerSum, - int dealerSum, - long bet, - boolean isOver, - long payout) { + private BlackjackState buildState(final List playerCards, final List dealerCards, final int playerSum, final int dealerSum, final long bet, final boolean isOver, final long payout) { return new BlackjackState( playerCards.toArray(String[]::new), dealerCards.toArray(String[]::new), diff --git a/src/main/java/creator/loki/feature/economy/service/game/JobService.java b/src/main/java/creator/loki/feature/economy/service/game/JobService.java index 90b773a..399fb81 100644 --- a/src/main/java/creator/loki/feature/economy/service/game/JobService.java +++ b/src/main/java/creator/loki/feature/economy/service/game/JobService.java @@ -23,7 +23,7 @@ public class JobService { this.repository = repository; } - public void setJob(String userId, String jobName) { + public void setJob(final String userId, String jobName) { Job job = Job.fromName(jobName); if (job == null) return; EconomyAccount account = repository.getAccount(userId); @@ -31,7 +31,7 @@ public class JobService { repository.save(updated); } - public WorkResult work(String userId, int userLevel) { + public WorkResult work(final String userId, final int userLevel) { EconomyAccount account = repository.getAccount(userId); String jobName = account.getJob(); if (jobName == null) return null; @@ -76,7 +76,7 @@ public class JobService { return infos; } - public String getCurrentJob(String userId) { + public String getCurrentJob(final String userId) { EconomyAccount account = repository.getAccount(userId); String jobName = account.getJob(); if (jobName == null) return null; diff --git a/src/main/java/creator/loki/feature/economy/service/game/SlotService.java b/src/main/java/creator/loki/feature/economy/service/game/SlotService.java index afc47ce..0736ae2 100644 --- a/src/main/java/creator/loki/feature/economy/service/game/SlotService.java +++ b/src/main/java/creator/loki/feature/economy/service/game/SlotService.java @@ -24,7 +24,7 @@ public class SlotService { this.repository = repository; } - public SlotResult spin(String userId, long bet) { + public SlotResult spin(final String userId, final long bet) { if (bet <= 0) return null; EconomyAccount account = repository.getAccount(userId); if (account.getCash() < bet) return null; diff --git a/src/main/java/creator/loki/feature/entertainment/EntertainmentCommandRegistrar.java b/src/main/java/creator/loki/feature/entertainment/EntertainmentCommandRegistrar.java index 5a39b0f..b6cc1f4 100644 --- a/src/main/java/creator/loki/feature/entertainment/EntertainmentCommandRegistrar.java +++ b/src/main/java/creator/loki/feature/entertainment/EntertainmentCommandRegistrar.java @@ -55,7 +55,7 @@ public class EntertainmentCommandRegistrar implements CommandRegistrar { } @Override - public void register(CommandRegistry registry) { + public void register(final CommandRegistry registry) { registry.register(new EightBallCommand()); registry.register(new CoinCommand()); registry.register(new DiceCommand()); diff --git a/src/main/java/creator/loki/feature/entertainment/commands/GlazbobaCommand.java b/src/main/java/creator/loki/feature/entertainment/commands/GlazbobaCommand.java index 7d89f2c..4ac478c 100644 --- a/src/main/java/creator/loki/feature/entertainment/commands/GlazbobaCommand.java +++ b/src/main/java/creator/loki/feature/entertainment/commands/GlazbobaCommand.java @@ -34,7 +34,7 @@ public class GlazbobaCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { List mentioned = context.getMessage().getMentions().getMembers(); if (mentioned.isEmpty()) { context.getChannel().sendMessage("Укажи пользователя через @").queue(); diff --git a/src/main/java/creator/loki/feature/entertainment/commands/MemeCommand.java b/src/main/java/creator/loki/feature/entertainment/commands/MemeCommand.java index bb51e86..1d9a625 100644 --- a/src/main/java/creator/loki/feature/entertainment/commands/MemeCommand.java +++ b/src/main/java/creator/loki/feature/entertainment/commands/MemeCommand.java @@ -37,7 +37,7 @@ public class MemeCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { context .getChannel() .sendMessage("🔍 Ищу мем...") diff --git a/src/main/java/creator/loki/feature/entertainment/commands/choice/RandomChoiceCommand.java b/src/main/java/creator/loki/feature/entertainment/commands/choice/RandomChoiceCommand.java index fbb669c..9347602 100644 --- a/src/main/java/creator/loki/feature/entertainment/commands/choice/RandomChoiceCommand.java +++ b/src/main/java/creator/loki/feature/entertainment/commands/choice/RandomChoiceCommand.java @@ -51,7 +51,7 @@ public class RandomChoiceCommand implements Command { this.templates = templates; } - String randomLine(String pick) { + String randomLine(final String pick) { var rnd = ThreadLocalRandom.current(); return String.format(templates[rnd.nextInt(templates.length)], pick); } @@ -88,7 +88,7 @@ public class RandomChoiceCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { String p = config.getPrefix(); String tail = ChoiceOptionParser.tailAfterCommand(context.getMessage().getContentRaw(), p, commandName); @@ -123,11 +123,11 @@ public class RandomChoiceCommand implements Command { reply(context, embed.build()); } - private static void reply(CommandContext ctx, net.dv8tion.jda.api.entities.MessageEmbed embed) { + private static void reply(final CommandContext ctx, final net.dv8tion.jda.api.entities.MessageEmbed embed) { ctx.getChannel().sendMessageEmbeds(embed).queue(); } - private String usageExamples(String p) { + private String usageExamples(final String p) { return "**Примеры:**\n" + "`" + p diff --git a/src/main/java/creator/loki/feature/entertainment/commands/random/CoinCommand.java b/src/main/java/creator/loki/feature/entertainment/commands/random/CoinCommand.java index 780b0ae..1289bde 100644 --- a/src/main/java/creator/loki/feature/entertainment/commands/random/CoinCommand.java +++ b/src/main/java/creator/loki/feature/entertainment/commands/random/CoinCommand.java @@ -32,7 +32,7 @@ public class CoinCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { boolean isHeads = random.nextBoolean(); String result = isHeads ? "Орёл" : "Решка"; String emoji = isHeads ? "🦅" : "🪙"; diff --git a/src/main/java/creator/loki/feature/entertainment/commands/random/DiceCommand.java b/src/main/java/creator/loki/feature/entertainment/commands/random/DiceCommand.java index b4076cb..2f6bbb1 100644 --- a/src/main/java/creator/loki/feature/entertainment/commands/random/DiceCommand.java +++ b/src/main/java/creator/loki/feature/entertainment/commands/random/DiceCommand.java @@ -32,7 +32,7 @@ public class DiceCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { int maxValue = 6; if (!context.getArgs().isEmpty()) { diff --git a/src/main/java/creator/loki/feature/entertainment/commands/random/EightBallCommand.java b/src/main/java/creator/loki/feature/entertainment/commands/random/EightBallCommand.java index 914d55f..702c39e 100644 --- a/src/main/java/creator/loki/feature/entertainment/commands/random/EightBallCommand.java +++ b/src/main/java/creator/loki/feature/entertainment/commands/random/EightBallCommand.java @@ -54,7 +54,7 @@ public class EightBallCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (context.getArgs().isEmpty()) { context.getChannel().sendMessage("Задай вопрос!").queue(); return; diff --git a/src/main/java/creator/loki/feature/entertainment/service/RatingService.java b/src/main/java/creator/loki/feature/entertainment/service/RatingService.java index e4f2e82..96d98e3 100644 --- a/src/main/java/creator/loki/feature/entertainment/service/RatingService.java +++ b/src/main/java/creator/loki/feature/entertainment/service/RatingService.java @@ -22,18 +22,18 @@ public class RatingService { this.cooldownManager = cooldownManager; } - public int getDeterministicValue(String userId, int salt, int min, int max) { + public int getDeterministicValue(final String userId, final int salt, final int min, final int max) { long seed = Long.parseLong(userId) + salt; RANDOM.setSeed(seed); return RANDOM.nextInt(max - min + 1) + min; } - public Member resolveTarget(CommandContext context) { + public Member resolveTarget(final CommandContext context) { List mentioned = context.getMessage().getMentions().getMembers(); return mentioned.isEmpty() ? context.getAuthor() : mentioned.get(0); } - public boolean checkAndApplyCooldown(CommandContext context, String commandName) { + public boolean checkAndApplyCooldown(final CommandContext context, final String commandName) { if (cooldownManager.isOnCooldown(context.getAuthor().getId(), commandName)) { long remaining = cooldownManager.getRemainingSeconds(context.getAuthor().getId(), commandName); diff --git a/src/main/java/creator/loki/feature/help/HelpMenuHandler.java b/src/main/java/creator/loki/feature/help/HelpMenuHandler.java index 0bf53c4..02aed9c 100644 --- a/src/main/java/creator/loki/feature/help/HelpMenuHandler.java +++ b/src/main/java/creator/loki/feature/help/HelpMenuHandler.java @@ -31,7 +31,7 @@ public class HelpMenuHandler extends ListenerAdapter { } @Override - public void onStringSelectInteraction(StringSelectInteractionEvent event) { + public void onStringSelectInteraction(final StringSelectInteractionEvent event) { if (!event.getComponentId().equals("help:category")) { return; } @@ -100,8 +100,7 @@ public class HelpMenuHandler extends ListenerAdapter { event.editMessageEmbeds(embed.build()).setComponents(ActionRow.of(menuBuilder.build())).queue(); } - private EmbedFactory createCategoryEmbed( - String category, List commands, StringSelectInteractionEvent event) { + private EmbedFactory createCategoryEmbed(final String category, final List commands, final StringSelectInteractionEvent event) { String emoji = HelpCategories.getEmoji(category); Color color = HelpCategories.getColor(category); @@ -153,7 +152,7 @@ public class HelpMenuHandler extends ListenerAdapter { return embed; } - private static boolean isNsfw(StringSelectInteractionEvent event) { + private static boolean isNsfw(final StringSelectInteractionEvent event) { return event.getChannel() instanceof IAgeRestrictedChannel arc && arc.isNSFW(); } } diff --git a/src/main/java/creator/loki/feature/help/commands/HelpCommand.java b/src/main/java/creator/loki/feature/help/commands/HelpCommand.java index d084734..61bd740 100644 --- a/src/main/java/creator/loki/feature/help/commands/HelpCommand.java +++ b/src/main/java/creator/loki/feature/help/commands/HelpCommand.java @@ -38,7 +38,7 @@ public class HelpCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { var commands = registry.getAllCommands(); Map> commandsByCategory = commands.stream().collect(Collectors.groupingBy(Command::getCategory)); @@ -86,16 +86,11 @@ public class HelpCommand implements Command { .queue(); } - private static boolean isNsfw(CommandContext context) { + private static boolean isNsfw(final CommandContext context) { return context.getChannel() instanceof IAgeRestrictedChannel arc && arc.isNSFW(); } - private EmbedFactory createMainPage( - CommandContext context, - Map> commandsByCategory, - boolean isAdmin, - boolean isSuper, - boolean isNsfwChannel) { + private EmbedFactory createMainPage(final CommandContext context, final Map> commandsByCategory, final boolean isAdmin, final boolean isSuper, final boolean isNsfwChannel) { int totalCommands = commandsByCategory.entrySet().stream() .filter( diff --git a/src/main/java/creator/loki/feature/image/ImageModule.java b/src/main/java/creator/loki/feature/image/ImageModule.java index b29b377..614578e 100644 --- a/src/main/java/creator/loki/feature/image/ImageModule.java +++ b/src/main/java/creator/loki/feature/image/ImageModule.java @@ -25,7 +25,7 @@ public class ImageModule extends AbstractModule { @Provides @Singleton - ImageService provideImageService(BotConfig config) { + ImageService provideImageService(final BotConfig config) { return new ImageService(config); } } diff --git a/src/main/java/creator/loki/feature/image/commands/AbstractImageCommand.java b/src/main/java/creator/loki/feature/image/commands/AbstractImageCommand.java index a13ec51..2c828fc 100644 --- a/src/main/java/creator/loki/feature/image/commands/AbstractImageCommand.java +++ b/src/main/java/creator/loki/feature/image/commands/AbstractImageCommand.java @@ -47,7 +47,7 @@ public abstract class AbstractImageCommand implements Command { // ── Общая логика execute ───────────────────────────────────────────────────── @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!isNsfwChannel(context)) { context .getChannel() @@ -101,7 +101,7 @@ public abstract class AbstractImageCommand implements Command { // ── Вспомогательное ────────────────────────────────────────────────────────── - protected static ParseResult parseArgs(List args) { + protected static ParseResult parseArgs(final List args) { if (args.isEmpty()) return new ParseResult(DEFAULT_FETCH, ""); try { int count = Integer.parseInt(args.get(0)); @@ -113,7 +113,7 @@ public abstract class AbstractImageCommand implements Command { } } - protected boolean isNsfwChannel(CommandContext context) { + protected boolean isNsfwChannel(final CommandContext context) { return context.getChannel() instanceof IAgeRestrictedChannel arc && arc.isNSFW(); } diff --git a/src/main/java/creator/loki/feature/image/commands/booru/GelbooruCommand.java b/src/main/java/creator/loki/feature/image/commands/booru/GelbooruCommand.java index 02a87c0..38cff71 100644 --- a/src/main/java/creator/loki/feature/image/commands/booru/GelbooruCommand.java +++ b/src/main/java/creator/loki/feature/image/commands/booru/GelbooruCommand.java @@ -10,7 +10,7 @@ import creator.loki.feature.image.commands.AbstractImageCommand; public class GelbooruCommand extends AbstractImageCommand { - public GelbooruCommand(ImageService imageService, ImageSessionManager sessionManager) { + public GelbooruCommand(final ImageService imageService, final ImageSessionManager sessionManager) { super(imageService, sessionManager); } @@ -50,7 +50,7 @@ public class GelbooruCommand extends AbstractImageCommand { } @Override - protected List fetchUrls(String tags, int limit) { + protected List fetchUrls(final String tags, final int limit) { return imageService.fetchGelbooru(tags, limit); } } diff --git a/src/main/java/creator/loki/feature/image/commands/booru/YandereCommand.java b/src/main/java/creator/loki/feature/image/commands/booru/YandereCommand.java index 0d5e684..5b82be3 100644 --- a/src/main/java/creator/loki/feature/image/commands/booru/YandereCommand.java +++ b/src/main/java/creator/loki/feature/image/commands/booru/YandereCommand.java @@ -10,7 +10,7 @@ import creator.loki.feature.image.commands.AbstractImageCommand; public class YandereCommand extends AbstractImageCommand { - public YandereCommand(ImageService imageService, ImageSessionManager sessionManager) { + public YandereCommand(final ImageService imageService, final ImageSessionManager sessionManager) { super(imageService, sessionManager); } @@ -50,7 +50,7 @@ public class YandereCommand extends AbstractImageCommand { } @Override - protected List fetchUrls(String tags, int limit) { + protected List fetchUrls(final String tags, final int limit) { return imageService.fetchYandere(tags, limit); } } diff --git a/src/main/java/creator/loki/feature/image/commands/e621/E621Command.java b/src/main/java/creator/loki/feature/image/commands/e621/E621Command.java index 62aff3b..973c336 100644 --- a/src/main/java/creator/loki/feature/image/commands/e621/E621Command.java +++ b/src/main/java/creator/loki/feature/image/commands/e621/E621Command.java @@ -10,7 +10,7 @@ import creator.loki.feature.image.commands.AbstractImageCommand; public class E621Command extends AbstractImageCommand { - public E621Command(ImageService imageService, ImageSessionManager sessionManager) { + public E621Command(final ImageService imageService, final ImageSessionManager sessionManager) { super(imageService, sessionManager); } @@ -50,7 +50,7 @@ public class E621Command extends AbstractImageCommand { } @Override - protected List fetchUrls(String tags, int limit) { + protected List fetchUrls(final String tags, final int limit) { return imageService.fetchE621(tags, limit); } } diff --git a/src/main/java/creator/loki/feature/image/commands/e621/E621RandomCommand.java b/src/main/java/creator/loki/feature/image/commands/e621/E621RandomCommand.java index 44f7e13..553800f 100644 --- a/src/main/java/creator/loki/feature/image/commands/e621/E621RandomCommand.java +++ b/src/main/java/creator/loki/feature/image/commands/e621/E621RandomCommand.java @@ -14,7 +14,7 @@ import creator.loki.feature.image.commands.AbstractImageCommand; public class E621RandomCommand extends AbstractImageCommand { - public E621RandomCommand(ImageService imageService, ImageSessionManager sessionManager) { + public E621RandomCommand(final ImageService imageService, final ImageSessionManager sessionManager) { super(imageService, sessionManager); } @@ -54,13 +54,13 @@ public class E621RandomCommand extends AbstractImageCommand { } @Override - protected List fetchUrls(String tags, int limit) { + protected List fetchUrls(final String tags, int limit) { return imageService.fetchE621("", limit); // теги игнорируются — всегда случайные } /** Переопределяем execute: теги не нужны, лимит берём из первого аргумента. */ @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!isNsfwChannel(context)) { context .getChannel() diff --git a/src/main/java/creator/loki/feature/image/listener/ImageNavigationHandler.java b/src/main/java/creator/loki/feature/image/listener/ImageNavigationHandler.java index 7474299..4b217b3 100644 --- a/src/main/java/creator/loki/feature/image/listener/ImageNavigationHandler.java +++ b/src/main/java/creator/loki/feature/image/listener/ImageNavigationHandler.java @@ -30,7 +30,7 @@ public class ImageNavigationHandler extends ListenerAdapter { } @Override - public void onButtonInteraction(ButtonInteractionEvent event) { + public void onButtonInteraction(final ButtonInteractionEvent event) { String id = event.getComponentId(); if (!id.startsWith(PREFIX)) return; @@ -57,7 +57,7 @@ public class ImageNavigationHandler extends ListenerAdapter { // ── Вперёд ─────────────────────────────────────────────────────────────────── - private void handleNext(ButtonInteractionEvent event, ImageSession session, String messageId) { + private void handleNext(final ButtonInteractionEvent event, final ImageSession session, final String messageId) { if (session.hasNext()) { // Есть готовая следующая страница в кеше logger.debug("nav: next in cache page={}/{}", session.page() + 1, session.totalPages()); @@ -76,7 +76,7 @@ public class ImageNavigationHandler extends ListenerAdapter { // ── Назад ──────────────────────────────────────────────────────────────────── - private void handlePrev(ButtonInteractionEvent event, ImageSession session, String messageId) { + private void handlePrev(final ButtonInteractionEvent event, final ImageSession session, final String messageId) { if (!session.hasPrev()) return; logger.debug("nav: prev page={}/{}", session.page() - 1, session.totalPages()); ImageSession updated = session.withPage(session.page() - 1); @@ -86,7 +86,7 @@ public class ImageNavigationHandler extends ListenerAdapter { // ── Подгрузка с API ────────────────────────────────────────────────────────── - private void loadMore(ButtonInteractionEvent event, ImageSession session, String messageId) { + private void loadMore(final ButtonInteractionEvent event, final ImageSession session, final String messageId) { int nextApiPage = session.apiPage() + 1; logger.debug( "loadMore: site={} tags='{}' apiPage={}", session.site(), session.tags(), nextApiPage); @@ -105,7 +105,7 @@ public class ImageNavigationHandler extends ListenerAdapter { .queue(); } - private List fetchPage(String site, String tags, int apiPage) { + private List fetchPage(final String site, final String tags, final int apiPage) { return switch (site) { case "e621.net" -> imageService.fetchE621(tags, PAGE_FETCH, apiPage); case "gelbooru.com" -> imageService.fetchGelbooru(tags, PAGE_FETCH, apiPage); @@ -116,7 +116,7 @@ public class ImageNavigationHandler extends ListenerAdapter { // ── Вспомогательное ────────────────────────────────────────────────────────── - private static void editMessage(ButtonInteractionEvent event, ImageSession session) { + private static void editMessage(final ButtonInteractionEvent event, final ImageSession session) { event .editMessageEmbeds(ImageEmbedHelper.buildEmbeds(session)) .setComponents(ImageEmbedHelper.buildActionRow(session)) diff --git a/src/main/java/creator/loki/feature/image/service/ImageService.java b/src/main/java/creator/loki/feature/image/service/ImageService.java index a62ab6f..7442bff 100644 --- a/src/main/java/creator/loki/feature/image/service/ImageService.java +++ b/src/main/java/creator/loki/feature/image/service/ImageService.java @@ -26,7 +26,7 @@ public class ImageService { private final OkHttpClient client; @Inject - public ImageService(BotConfig config) { + public ImageService(final BotConfig config) { this.client = new OkHttpClient.Builder() .connectTimeout(15, TimeUnit.SECONDS) @@ -44,7 +44,7 @@ public class ImageService { Request request = new Request.Builder().url(url).header("User-Agent", "LokiBot/1.0 (by loki)").get().build(); - try (Response response = client.newCall(request).execute()) { + try (final Response response = client.newCall(request).execute()) { if (!response.isSuccessful() || response.body() == null) { logger.error("e621 API error: {} {}", response.code(), response.message()); return List.of(); @@ -107,11 +107,11 @@ public class ImageService { return fetchBooruJson(url, limit); } - private List fetchBooruJson(String url, int limit) { + private List fetchBooruJson(final String url, final int limit) { Request request = new Request.Builder().url(url).header("User-Agent", "LokiBot/1.0 (by loki)").get().build(); - try (Response response = client.newCall(request).execute()) { + try (final Response response = client.newCall(request).execute()) { if (!response.isSuccessful() || response.body() == null) { logger.error("Booru API error: {} {}", response.code(), response.message()); return List.of(); diff --git a/src/main/java/creator/loki/feature/image/service/ImageSession.java b/src/main/java/creator/loki/feature/image/service/ImageSession.java index 9cdc81b..64a85f9 100644 --- a/src/main/java/creator/loki/feature/image/service/ImageSession.java +++ b/src/main/java/creator/loki/feature/image/service/ImageSession.java @@ -28,14 +28,7 @@ public record ImageSession( // ── Фабричный метод ────────────────────────────────────────────────────────── - public static ImageSession create( - List urls, - int pageSize, - String site, - java.awt.Color color, - String tags, - long userId, - long guildId) { + public static ImageSession create(final List urls, final int pageSize, final String site, final java.awt.Color color, final String tags, final long userId, final long guildId) { return new ImageSession( urls, 0, @@ -73,7 +66,7 @@ public record ImageSession( // ── Мутации (возвращают новый экземпляр) ──────────────────────────────────── - public ImageSession withPage(int newPage) { + public ImageSession withPage(final int newPage) { return new ImageSession( urls, newPage, @@ -92,7 +85,7 @@ public record ImageSession( * Добавляем новые URL из следующей API-страницы и переходим на следующую внутреннюю страницу. * Если newUrls пустой — помечаем сессию как exhausted. */ - public ImageSession withMoreUrls(List newUrls) { + public ImageSession withMoreUrls(final List newUrls) { if (newUrls.isEmpty()) { // API больше ничего не отдал — остаёмся на месте, ставим флаг return new ImageSession( diff --git a/src/main/java/creator/loki/feature/image/service/ImageSessionManager.java b/src/main/java/creator/loki/feature/image/service/ImageSessionManager.java index 4ce6951..0ad02ea 100644 --- a/src/main/java/creator/loki/feature/image/service/ImageSessionManager.java +++ b/src/main/java/creator/loki/feature/image/service/ImageSessionManager.java @@ -11,12 +11,12 @@ public class ImageSessionManager { private static final long SESSION_TTL = 5 * 60 * 1000; private final Map sessions = new ConcurrentHashMap<>(); - public void put(String messageId, ImageSession session) { + public void put(final String messageId, ImageSession session) { cleanup(); sessions.put(messageId, session); } - public ImageSession get(String messageId) { + public ImageSession get(final String messageId) { ImageSession session = sessions.get(messageId); if (session == null) return null; if (System.currentTimeMillis() - session.createdAt() > SESSION_TTL) { @@ -26,11 +26,11 @@ public class ImageSessionManager { return session; } - public void update(String messageId, ImageSession session) { + public void update(final String messageId, final ImageSession session) { sessions.put(messageId, session); } - public void remove(String messageId) { + public void remove(final String messageId) { sessions.remove(messageId); } @@ -39,7 +39,7 @@ public class ImageSessionManager { sessions.values().removeIf(s -> now - s.createdAt() > SESSION_TTL); } - public static Color parseColor(String hex) { + public static Color parseColor(final String hex) { try { return Color.decode(hex); } catch (NumberFormatException e) { diff --git a/src/main/java/creator/loki/feature/image/util/ImageCommandRegistrar.java b/src/main/java/creator/loki/feature/image/util/ImageCommandRegistrar.java index 6e5cb51..6122390 100644 --- a/src/main/java/creator/loki/feature/image/util/ImageCommandRegistrar.java +++ b/src/main/java/creator/loki/feature/image/util/ImageCommandRegistrar.java @@ -21,7 +21,7 @@ public class ImageCommandRegistrar implements CommandRegistrar { } @Override - public void register(CommandRegistry registry) { + public void register(final CommandRegistry registry) { registry.register(new E621Command(imageService, sessionManager)); registry.register(new E621RandomCommand(imageService, sessionManager)); registry.register(new GelbooruCommand(imageService, sessionManager)); diff --git a/src/main/java/creator/loki/feature/image/util/ImageEmbedHelper.java b/src/main/java/creator/loki/feature/image/util/ImageEmbedHelper.java index 5365faf..1fdacb1 100644 --- a/src/main/java/creator/loki/feature/image/util/ImageEmbedHelper.java +++ b/src/main/java/creator/loki/feature/image/util/ImageEmbedHelper.java @@ -18,7 +18,7 @@ public final class ImageEmbedHelper { private ImageEmbedHelper() {} - public static MessageEmbed[] buildEmbeds(ImageSession session) { + public static MessageEmbed[] buildEmbeds(final ImageSession session) { String tagsStr = formatTags(session.tags()); List embeds = new ArrayList<>(); List pageUrls = session.currentPageUrls(); @@ -84,7 +84,7 @@ public final class ImageEmbedHelper { return embeds.toArray(new MessageEmbed[0]); } - public static ActionRow buildActionRow(ImageSession session) { + public static ActionRow buildActionRow(final ImageSession session) { boolean noPrev = !session.hasPrev(); boolean noNext = !session.hasNext() && session.exhausted(); return ActionRow.of( @@ -111,7 +111,7 @@ public final class ImageEmbedHelper { return (tags == null || tags.isBlank()) ? "" : " `" + tags + "`"; } - private static String extension(String url) { + private static String extension(final String url) { int dot = url.lastIndexOf('.'); if (dot < 0 || dot >= url.length() - 1) return ""; int end = url.indexOf('?', dot); @@ -119,7 +119,7 @@ public final class ImageEmbedHelper { return url.substring(dot + 1, end).toLowerCase(); } - private static boolean isVideoExt(String ext) { + private static boolean isVideoExt(final String ext) { return VIDEO_EXTS.contains(ext); } } diff --git a/src/main/java/creator/loki/feature/info/commands/AvatarCommand.java b/src/main/java/creator/loki/feature/info/commands/AvatarCommand.java index dbf30b1..d0a652a 100644 --- a/src/main/java/creator/loki/feature/info/commands/AvatarCommand.java +++ b/src/main/java/creator/loki/feature/info/commands/AvatarCommand.java @@ -33,7 +33,7 @@ public class AvatarCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { User targetUser; // Если упомянут пользователь - показываем его аватар diff --git a/src/main/java/creator/loki/feature/info/commands/InfoCommand.java b/src/main/java/creator/loki/feature/info/commands/InfoCommand.java index 067e9f3..3dc344b 100644 --- a/src/main/java/creator/loki/feature/info/commands/InfoCommand.java +++ b/src/main/java/creator/loki/feature/info/commands/InfoCommand.java @@ -32,7 +32,7 @@ public class InfoCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { String type = context.getArgs().isEmpty() ? "server" : context.getArgs().get(0).toLowerCase(); switch (type) { @@ -47,7 +47,7 @@ public class InfoCommand implements Command { } } - private void showServerInfo(CommandContext context) { + private void showServerInfo(final CommandContext context) { Guild guild = context.getGuild(); if (guild == null) return; @@ -78,7 +78,7 @@ public class InfoCommand implements Command { .queue(); } - private void showUserInfo(CommandContext context) { + private void showUserInfo(final CommandContext context) { Member member = context.getAuthor(); if (member == null) return; diff --git a/src/main/java/creator/loki/feature/info/commands/PingCommand.java b/src/main/java/creator/loki/feature/info/commands/PingCommand.java index 38e55ee..11e86e1 100644 --- a/src/main/java/creator/loki/feature/info/commands/PingCommand.java +++ b/src/main/java/creator/loki/feature/info/commands/PingCommand.java @@ -20,7 +20,7 @@ public class PingCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { long startTime = System.currentTimeMillis(); context diff --git a/src/main/java/creator/loki/feature/info/commands/ServerStatsCommand.java b/src/main/java/creator/loki/feature/info/commands/ServerStatsCommand.java index aa98c4b..c1bfcd9 100644 --- a/src/main/java/creator/loki/feature/info/commands/ServerStatsCommand.java +++ b/src/main/java/creator/loki/feature/info/commands/ServerStatsCommand.java @@ -39,7 +39,7 @@ public class ServerStatsCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { Guild guild = context.getGuild(); if (guild == null) { context.getChannel().sendMessage("Только на сервере.").queue(); @@ -55,7 +55,7 @@ public class ServerStatsCommand implements Command { } } - private void handleEmbed(CommandContext context, Guild guild) { + private void handleEmbed(final CommandContext context, final Guild guild) { guild .loadMembers() .onSuccess( @@ -144,7 +144,7 @@ public class ServerStatsCommand implements Command { }); } - private void handleCsv(CommandContext context, Guild guild) { + private void handleCsv(final CommandContext context, final Guild guild) { context .getChannel() .sendMessage("⏳ Генерирую CSV...") @@ -165,7 +165,7 @@ public class ServerStatsCommand implements Command { }); } - private void handleChart(CommandContext context, Guild guild) { + private void handleChart(final CommandContext context, final Guild guild) { context .getChannel() .sendMessage("⏳ Генерирую график...") diff --git a/src/main/java/creator/loki/feature/leaderboard/LeaderboardButtonListener.java b/src/main/java/creator/loki/feature/leaderboard/LeaderboardButtonListener.java index 8949cd7..a52f6cd 100644 --- a/src/main/java/creator/loki/feature/leaderboard/LeaderboardButtonListener.java +++ b/src/main/java/creator/loki/feature/leaderboard/LeaderboardButtonListener.java @@ -17,7 +17,7 @@ public class LeaderboardButtonListener extends ListenerAdapter { } @Override - public void onButtonInteraction(ButtonInteractionEvent event) { + public void onButtonInteraction(final ButtonInteractionEvent event) { String buttonId = event.getComponentId(); if (!buttonId.startsWith("lb_")) { @@ -36,19 +36,19 @@ public class LeaderboardButtonListener extends ListenerAdapter { } } - private void showLevelLeaderboard(ButtonInteractionEvent event) { + private void showLevelLeaderboard(final ButtonInteractionEvent event) { var top = leaderboardService.getTopByLevel(10); var embed = LeaderboardFormatter.formatLevelLeaderboard(top); event.getHook().editOriginalEmbeds(embed).queue(); } - private void showMessageLeaderboard(ButtonInteractionEvent event) { + private void showMessageLeaderboard(final ButtonInteractionEvent event) { var top = leaderboardService.getTopByMessages(10); var embed = LeaderboardFormatter.formatMessageLeaderboard(top); event.getHook().editOriginalEmbeds(embed).queue(); } - private void showVoiceLeaderboard(ButtonInteractionEvent event) { + private void showVoiceLeaderboard(final ButtonInteractionEvent event) { var top = leaderboardService.getTopByVoice(10); var embed = LeaderboardFormatter.formatVoiceLeaderboard(top); event.getHook().editOriginalEmbeds(embed).queue(); diff --git a/src/main/java/creator/loki/feature/leaderboard/LeaderboardCommand.java b/src/main/java/creator/loki/feature/leaderboard/LeaderboardCommand.java index ad00375..9254b1a 100644 --- a/src/main/java/creator/loki/feature/leaderboard/LeaderboardCommand.java +++ b/src/main/java/creator/loki/feature/leaderboard/LeaderboardCommand.java @@ -37,7 +37,7 @@ public class LeaderboardCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { var top = leaderboardService.getTopByLevel(10); if (top.isEmpty()) { diff --git a/src/main/java/creator/loki/feature/leaderboard/LeaderboardFormatter.java b/src/main/java/creator/loki/feature/leaderboard/LeaderboardFormatter.java index b903d98..d8ab064 100644 --- a/src/main/java/creator/loki/feature/leaderboard/LeaderboardFormatter.java +++ b/src/main/java/creator/loki/feature/leaderboard/LeaderboardFormatter.java @@ -12,7 +12,7 @@ import net.dv8tion.jda.api.entities.MessageEmbed; /** Форматирование таблиц лидеров (DRY принцип) */ public class LeaderboardFormatter { - public static MessageEmbed formatLevelLeaderboard(List> top) { + public static MessageEmbed formatLevelLeaderboard(final List> top) { return formatLeaderboard( top, "🏆 Топ-10 по уровням", @@ -23,7 +23,7 @@ public class LeaderboardFormatter { }); } - public static MessageEmbed formatMessageLeaderboard(List> top) { + public static MessageEmbed formatMessageLeaderboard(final List> top) { return formatLeaderboard( top, "💬 Топ-10 по сообщениям", @@ -31,7 +31,7 @@ public class LeaderboardFormatter { entry -> "**" + entry.getValue().getMessageCount() + "** сообщений"); } - public static MessageEmbed formatVoiceLeaderboard(List> top) { + public static MessageEmbed formatVoiceLeaderboard(final List> top) { return formatLeaderboard( top, "🎤 Топ-10 по времени в войсе", @@ -44,11 +44,7 @@ public class LeaderboardFormatter { }); } - private static MessageEmbed formatLeaderboard( - List> top, - String title, - Color color, - Function, String> statFormatter) { + private static MessageEmbed formatLeaderboard(final List> top, final String title, final Color color, final Function, String> statFormatter) { StringBuilder description = new StringBuilder(); int position = 1; @@ -79,7 +75,7 @@ public class LeaderboardFormatter { .build(); } - private static String getPositionEmoji(int position) { + private static String getPositionEmoji(final int position) { return switch (position) { case 1 -> "🥇"; case 2 -> "🥈"; diff --git a/src/main/java/creator/loki/feature/level/LevelModule.java b/src/main/java/creator/loki/feature/level/LevelModule.java index d56322e..4849bf6 100644 --- a/src/main/java/creator/loki/feature/level/LevelModule.java +++ b/src/main/java/creator/loki/feature/level/LevelModule.java @@ -35,7 +35,7 @@ public class LevelModule extends AbstractModule { @Provides @Singleton - UserStatsRepository provideUserStatsRepository(Database database) { + UserStatsRepository provideUserStatsRepository(final Database database) { return new SqlUserStatsRepository(database); } @@ -47,40 +47,37 @@ public class LevelModule extends AbstractModule { @Provides @Singleton - MessageCooldownService provideMessageCooldownService(UserStatsRepository repository) { + MessageCooldownService provideMessageCooldownService(final UserStatsRepository repository) { return new MessageCooldownService(repository); } @Provides @Singleton - LeaderboardService provideLeaderboardService(UserStatsRepository repository) { + LeaderboardService provideLeaderboardService(final UserStatsRepository repository) { return new LeaderboardService(repository); } @Provides @Singleton - LevelService provideLevelService( - UserStatsRepository repository, XpFormula xpFormula, MessageCooldownService cooldownService) { + LevelService provideLevelService(final UserStatsRepository repository, final XpFormula xpFormula, final MessageCooldownService cooldownService) { return new LevelService(repository, xpFormula, cooldownService); } @Provides @Singleton - LevelRoleService provideLevelRoleService(ConfigRepository configRepository) { + LevelRoleService provideLevelRoleService(final ConfigRepository configRepository) { return new LevelRoleService(configRepository); } @Provides @Singleton - LevelUpNotifier provideLevelUpNotifier( - ConfigRepository configRepo, LevelService levelService, LevelRoleService levelRoleService) { + LevelUpNotifier provideLevelUpNotifier(final ConfigRepository configRepo, final LevelService levelService, final LevelRoleService levelRoleService) { return new LevelUpNotifier(configRepo, levelService, levelRoleService); } @Provides @Singleton - ResetLevelsCommand provideResetLevelsCommand( - UserStatsRepository userStatsRepository, GuildConfigRepository guildConfigRepository) { + ResetLevelsCommand provideResetLevelsCommand(final UserStatsRepository userStatsRepository, final GuildConfigRepository guildConfigRepository) { return new ResetLevelsCommand(userStatsRepository, guildConfigRepository); } } diff --git a/src/main/java/creator/loki/feature/level/commands/LevelCommandRegistrar.java b/src/main/java/creator/loki/feature/level/commands/LevelCommandRegistrar.java index 33e2b44..3f0739a 100644 --- a/src/main/java/creator/loki/feature/level/commands/LevelCommandRegistrar.java +++ b/src/main/java/creator/loki/feature/level/commands/LevelCommandRegistrar.java @@ -34,7 +34,7 @@ public class LevelCommandRegistrar implements CommandRegistrar { } @Override - public void register(CommandRegistry registry) { + public void register(final CommandRegistry registry) { registry.register(new LeaderboardCommand(leaderboardService)); registry.register(new StatsCommand()); registry.register(resetLevelsCommand); diff --git a/src/main/java/creator/loki/feature/level/commands/LevelRoleCommand.java b/src/main/java/creator/loki/feature/level/commands/LevelRoleCommand.java index be66e29..2ba6c93 100644 --- a/src/main/java/creator/loki/feature/level/commands/LevelRoleCommand.java +++ b/src/main/java/creator/loki/feature/level/commands/LevelRoleCommand.java @@ -42,7 +42,7 @@ public class LevelRoleCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (context.getAuthor() == null || !context.getAuthor().hasPermission(Permission.ADMINISTRATOR)) { context @@ -77,7 +77,7 @@ public class LevelRoleCommand implements Command { } } - private void handleSet(CommandContext context, List args) { + private void handleSet(final CommandContext context, final List args) { if (args.size() < 3) { context .getChannel() @@ -127,7 +127,7 @@ public class LevelRoleCommand implements Command { .queue(); } - private void handleRemove(CommandContext context, List args) { + private void handleRemove(final CommandContext context, final List args) { if (args.size() < 2) { context .getChannel() @@ -158,7 +158,7 @@ public class LevelRoleCommand implements Command { .queue(); } - private void handleClear(CommandContext context) { + private void handleClear(final CommandContext context) { Map allConfig = configRepository.getAll(); int removed = 0; for (String key : allConfig.keySet()) { diff --git a/src/main/java/creator/loki/feature/level/commands/admin/ResetLevelsCommand.java b/src/main/java/creator/loki/feature/level/commands/admin/ResetLevelsCommand.java index 47ea62b..0e71c58 100644 --- a/src/main/java/creator/loki/feature/level/commands/admin/ResetLevelsCommand.java +++ b/src/main/java/creator/loki/feature/level/commands/admin/ResetLevelsCommand.java @@ -53,7 +53,7 @@ public class ResetLevelsCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { // Проверка прав администратора if (context.getAuthor() == null || !context.getAuthor().hasPermission(Permission.ADMINISTRATOR)) { @@ -127,7 +127,7 @@ public class ResetLevelsCommand implements Command { } /** Выполняет сброс уровней (вызывается из ButtonHandler) */ - public void executeReset(String guildId, String userId) { + public void executeReset(final String guildId, final String userId) { try { LoggerDecorator.warn(logger, "Начало сброса уровней для гильдии: " + guildId); LoggerDecorator.warn(logger, "Инициатор: " + userId); diff --git a/src/main/java/creator/loki/feature/level/commands/admin/StatsCommand.java b/src/main/java/creator/loki/feature/level/commands/admin/StatsCommand.java index 582a160..202a9cb 100644 --- a/src/main/java/creator/loki/feature/level/commands/admin/StatsCommand.java +++ b/src/main/java/creator/loki/feature/level/commands/admin/StatsCommand.java @@ -32,7 +32,7 @@ public class StatsCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (context.getGuild() == null) { context.getChannel().sendMessage("Команда доступна только на сервере").queue(); return; diff --git a/src/main/java/creator/loki/feature/level/commands/util/LevelRoleFormatter.java b/src/main/java/creator/loki/feature/level/commands/util/LevelRoleFormatter.java index c60abdf..1a69b5a 100644 --- a/src/main/java/creator/loki/feature/level/commands/util/LevelRoleFormatter.java +++ b/src/main/java/creator/loki/feature/level/commands/util/LevelRoleFormatter.java @@ -9,8 +9,7 @@ import net.dv8tion.jda.api.EmbedBuilder; public class LevelRoleFormatter { - public static EmbedBuilder buildMappingsEmbed( - ConfigRepository configRepository, LevelRoleService levelRoleService) { + public static EmbedBuilder buildMappingsEmbed(final ConfigRepository configRepository, final LevelRoleService levelRoleService) { Map allConfig = configRepository.getAll(); Map customRoles = allConfig.entrySet().stream() diff --git a/src/main/java/creator/loki/feature/level/domain/UserStats.java b/src/main/java/creator/loki/feature/level/domain/UserStats.java index f44a9a7..b63576b 100644 --- a/src/main/java/creator/loki/feature/level/domain/UserStats.java +++ b/src/main/java/creator/loki/feature/level/domain/UserStats.java @@ -21,7 +21,7 @@ public class UserStats { this.lastVoiceJoin = 0; } - private UserStats(Builder builder) { + private UserStats(final Builder builder) { this.userId = builder.userId; this.level = builder.level; this.totalXP = builder.totalXP; @@ -63,15 +63,15 @@ public class UserStats { return new Builder(this).level(level).build(); } - public UserStats withAddedXP(int xp) { + public UserStats withAddedXP(final int xp) { return new Builder(this).totalXP(this.totalXP + xp).build(); } - public UserStats withRecordedMessage(long timestamp) { + public UserStats withRecordedMessage(final long timestamp) { return new Builder(this).messageCount(this.messageCount + 1).lastMessageTime(timestamp).build(); } - public UserStats withAddedVoiceMinutes(long minutes) { + public UserStats withAddedVoiceMinutes(final long minutes) { return new Builder(this).voiceMinutes(this.voiceMinutes + minutes).build(); } @@ -106,7 +106,7 @@ public class UserStats { public Builder() {} - public Builder(UserStats existing) { + public Builder(final UserStats existing) { this.userId = existing.userId; this.level = existing.level; this.totalXP = existing.totalXP; diff --git a/src/main/java/creator/loki/feature/level/domain/XpFormula.java b/src/main/java/creator/loki/feature/level/domain/XpFormula.java index c741feb..e0000dc 100644 --- a/src/main/java/creator/loki/feature/level/domain/XpFormula.java +++ b/src/main/java/creator/loki/feature/level/domain/XpFormula.java @@ -10,7 +10,7 @@ public class XpFormula { * @param level целевой уровень * @return общее количество XP */ - public int getTotalXPForLevel(int level) { + public int getTotalXPForLevel(final int level) { if (level <= 0) { return 0; } @@ -23,7 +23,7 @@ public class XpFormula { * @param xp текущее количество XP * @return текущий уровень */ - public int calculateLevel(int xp) { + public int calculateLevel(final int xp) { if (xp <= 0) { return 0; } @@ -37,7 +37,7 @@ public class XpFormula { * @param currentLevel текущий уровень * @return XP для следующего уровня */ - public int getXpForNextLevel(int currentLevel) { + public int getXpForNextLevel(final int currentLevel) { return XP_PER_LEVEL * (currentLevel + 1); } @@ -48,7 +48,7 @@ public class XpFormula { * @param currentLevel текущий уровень * @return прогресс от 0.0 до 1.0 */ - public double getProgressToNextLevel(int currentXp, int currentLevel) { + public double getProgressToNextLevel(final int currentXp, final int currentLevel) { int xpForCurrentLevel = getTotalXPForLevel(currentLevel); int xpForNextLevel = getTotalXPForLevel(currentLevel + 1); int xpNeeded = xpForNextLevel - xpForCurrentLevel; diff --git a/src/main/java/creator/loki/feature/level/listener/MessageListener.java b/src/main/java/creator/loki/feature/level/listener/MessageListener.java index 6db8042..4036929 100644 --- a/src/main/java/creator/loki/feature/level/listener/MessageListener.java +++ b/src/main/java/creator/loki/feature/level/listener/MessageListener.java @@ -35,7 +35,7 @@ public class MessageListener extends ListenerAdapter { } @Override - public void onMessageReceived(MessageReceivedEvent event) { + public void onMessageReceived(final MessageReceivedEvent event) { try { if (!event.getAuthor().isBot()) { String userId = event.getAuthor().getId(); diff --git a/src/main/java/creator/loki/feature/level/listener/ResetLevelsButtonHandler.java b/src/main/java/creator/loki/feature/level/listener/ResetLevelsButtonHandler.java index be7ae47..4ae9784 100644 --- a/src/main/java/creator/loki/feature/level/listener/ResetLevelsButtonHandler.java +++ b/src/main/java/creator/loki/feature/level/listener/ResetLevelsButtonHandler.java @@ -26,7 +26,7 @@ public class ResetLevelsButtonHandler extends ListenerAdapter { } @Override - public void onButtonInteraction(ButtonInteractionEvent event) { + public void onButtonInteraction(final ButtonInteractionEvent event) { String buttonId = event.getComponentId(); if (buttonId.startsWith(PREFIX_CONFIRM)) { diff --git a/src/main/java/creator/loki/feature/level/repository/SqlUserStatsRepository.java b/src/main/java/creator/loki/feature/level/repository/SqlUserStatsRepository.java index 4fe76f8..c025978 100644 --- a/src/main/java/creator/loki/feature/level/repository/SqlUserStatsRepository.java +++ b/src/main/java/creator/loki/feature/level/repository/SqlUserStatsRepository.java @@ -23,7 +23,7 @@ public class SqlUserStatsRepository implements UserStatsRepository { } @Override - public Optional findById(String userId) { + public Optional findById(final String userId) { String sql = """ SELECT user_id, level, total_xp, message_count, voice_minutes, @@ -31,9 +31,9 @@ public class SqlUserStatsRepository implements UserStatsRepository { FROM user_stats WHERE user_id = ? """; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, userId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { if (rs.next()) { return Optional.of(UserStatsMapper.mapResultSetToUserStats(rs)); } @@ -60,7 +60,7 @@ public class SqlUserStatsRepository implements UserStatsRepository { last_message_time = excluded.last_message_time, last_voice_join = excluded.last_voice_join """; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, stats.getUserId()); stmt.setInt(2, stats.getLevel()); stmt.setInt(3, stats.getTotalXP()); @@ -83,7 +83,7 @@ public class SqlUserStatsRepository implements UserStatsRepository { last_message_time, last_voice_join FROM user_stats """; - try (PreparedStatement stmt = database.prepare(sql); + try (final PreparedStatement stmt = database.prepare(sql); ResultSet rs = stmt.executeQuery()) { while (rs.next()) { UserStats stats = UserStatsMapper.mapResultSetToUserStats(rs); @@ -96,31 +96,31 @@ public class SqlUserStatsRepository implements UserStatsRepository { } @Override - public List findTopByLevel(int limit) { + public List findTopByLevel(final int limit) { return UserStatsMapper.findTopByLevel(database, limit); } @Override - public List findTopByMessageCount(int limit) { + public List findTopByMessageCount(final int limit) { return UserStatsMapper.findTopByMessageCount(database, limit); } @Override - public List findTopByVoiceMinutes(int limit) { + public List findTopByVoiceMinutes(final int limit) { return UserStatsMapper.findTopByVoiceMinutes(database, limit); } @Override - public int findRankByLevelOrder(String userId) { + public int findRankByLevelOrder(final String userId) { return UserStatsMapper.findRankByLevelOrder(database, userId); } @Override - public boolean exists(String userId) { + public boolean exists(final String userId) { String sql = "SELECT 1 FROM user_stats WHERE user_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, userId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { return rs.next(); } } catch (SQLException e) { @@ -131,7 +131,7 @@ public class SqlUserStatsRepository implements UserStatsRepository { public void deleteAll() { String sql = "DELETE FROM user_stats"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { int deleted = stmt.executeUpdate(); logger.info("Удалено {} записей статистики", deleted); } catch (SQLException e) { diff --git a/src/main/java/creator/loki/feature/level/repository/UserStatsMapper.java b/src/main/java/creator/loki/feature/level/repository/UserStatsMapper.java index de126c5..b13ec96 100644 --- a/src/main/java/creator/loki/feature/level/repository/UserStatsMapper.java +++ b/src/main/java/creator/loki/feature/level/repository/UserStatsMapper.java @@ -28,16 +28,16 @@ public class UserStatsMapper { .build(); } - public static int clampLimit(int limit) { + public static int clampLimit(final int limit) { if (limit <= 0) return 1; return Math.min(limit, MAX_TOP); } - public static List queryTopList(Database database, String sql, int limit) { + public static List queryTopList(final Database database, String sql, final int limit) { List list = new ArrayList<>(); - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setInt(1, limit); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { while (rs.next()) { list.add(mapResultSetToUserStats(rs)); } @@ -48,7 +48,7 @@ public class UserStatsMapper { return Collections.unmodifiableList(list); } - public static List findTopByLevel(Database database, int limit) { + public static List findTopByLevel(final Database database, final int limit) { int lim = clampLimit(limit); String sql = """ @@ -61,7 +61,7 @@ public class UserStatsMapper { return queryTopList(database, sql, lim); } - public static List findTopByMessageCount(Database database, int limit) { + public static List findTopByMessageCount(final Database database, final int limit) { int lim = clampLimit(limit); String sql = """ @@ -74,7 +74,7 @@ public class UserStatsMapper { return queryTopList(database, sql, lim); } - public static List findTopByVoiceMinutes(Database database, int limit) { + public static List findTopByVoiceMinutes(final Database database, final int limit) { int lim = clampLimit(limit); String sql = """ @@ -87,7 +87,7 @@ public class UserStatsMapper { return queryTopList(database, sql, lim); } - public static int findRankByLevelOrder(Database database, String userId) { + public static int findRankByLevelOrder(final Database database, final String userId) { if (!exists(database, userId)) return -1; String sql = """ @@ -101,9 +101,9 @@ public class UserStatsMapper { OR (u.level = me.level AND u.total_xp > me.total_xp) OR (u.level = me.level AND u.total_xp = me.total_xp AND u.user_id < me.uid) """; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, userId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { if (rs.next()) return rs.getInt(1); } } catch (SQLException e) { @@ -112,11 +112,11 @@ public class UserStatsMapper { return -1; } - private static boolean exists(Database database, String userId) { + private static boolean exists(final Database database, final String userId) { String sql = "SELECT 1 FROM user_stats WHERE user_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, userId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { return rs.next(); } } catch (SQLException e) { diff --git a/src/main/java/creator/loki/feature/level/repository/UserStatsRepository.java b/src/main/java/creator/loki/feature/level/repository/UserStatsRepository.java index a72d633..750b398 100644 --- a/src/main/java/creator/loki/feature/level/repository/UserStatsRepository.java +++ b/src/main/java/creator/loki/feature/level/repository/UserStatsRepository.java @@ -10,20 +10,20 @@ import creator.loki.feature.level.domain.UserStats; public interface UserStatsRepository { /** Найти статистику пользователя по ID */ - Optional findById(String userId); + Optional findById(final String userId); /** Сохранить статистику пользователя */ - void save(UserStats stats); + void save(final UserStats stats); /** Получить всю статистику (для лидерборда) */ Map findAll(); /** Топ по уровню (стабильный порядок при ничьих), не более {@code limit} строк. */ - List findTopByLevel(int limit); + List findTopByLevel(final int limit); - List findTopByMessageCount(int limit); + List findTopByMessageCount(final int limit); - List findTopByVoiceMinutes(int limit); + List findTopByVoiceMinutes(final int limit); /** Место в рейтинге по уровню (1 = лучший). {@code -1}, если пользователя нет в таблице. */ int findRankByLevelOrder(String userId); @@ -32,12 +32,12 @@ public interface UserStatsRepository { boolean exists(String userId); /** Получить статистику пользователя или создать новую */ - default UserStats getUserStats(String userId) { + default UserStats getUserStats(final String userId) { return findById(userId).orElse(new UserStats(userId)); } /** Сохранить статистику пользователя (алиас для save) */ - default void saveUserStats(String userId, UserStats stats) { + default void saveUserStats(final String userId, final UserStats stats) { save(stats); } diff --git a/src/main/java/creator/loki/feature/level/service/LeaderboardService.java b/src/main/java/creator/loki/feature/level/service/LeaderboardService.java index 49b9d58..924cb25 100644 --- a/src/main/java/creator/loki/feature/level/service/LeaderboardService.java +++ b/src/main/java/creator/loki/feature/level/service/LeaderboardService.java @@ -16,30 +16,30 @@ public class LeaderboardService { this.repository = repository; } - public List> getTopByLevel(int limit) { + public List> getTopByLevel(final int limit) { return toEntries(repository.findTopByLevel(clamp(limit))); } - public List> getTopByMessages(int limit) { + public List> getTopByMessages(final int limit) { return toEntries(repository.findTopByMessageCount(clamp(limit))); } - public List> getTopByVoice(int limit) { + public List> getTopByVoice(final int limit) { return toEntries(repository.findTopByVoiceMinutes(clamp(limit))); } - public int getUserRankByLevel(String userId) { + public int getUserRankByLevel(final String userId) { return repository.findRankByLevelOrder(userId); } - private static int clamp(int limit) { + private static int clamp(final int limit) { if (limit <= 0) { return 1; } return Math.min(limit, MAX_QUERY); } - private static List> toEntries(List rows) { + private static List> toEntries(final List rows) { return rows.stream().map(s -> Map.entry(s.getUserId(), s)).toList(); } } diff --git a/src/main/java/creator/loki/feature/level/service/LevelRoleService.java b/src/main/java/creator/loki/feature/level/service/LevelRoleService.java index 8ac4f63..a5ff61c 100644 --- a/src/main/java/creator/loki/feature/level/service/LevelRoleService.java +++ b/src/main/java/creator/loki/feature/level/service/LevelRoleService.java @@ -26,21 +26,21 @@ public class LevelRoleService { this.configRepository = configRepository; } - public String getRoleForLevel(int level) { + public String getRoleForLevel(final int level) { String configRole = configRepository.get("level_role_" + level); if (configRole != null) return configRole; return DEFAULT_ROLES.get(level); } - public void setRoleForLevel(int level, String roleName) { + public void setRoleForLevel(final int level, String roleName) { configRepository.set("level_role_" + level, roleName); } - public void removeRoleForLevel(int level) { + public void removeRoleForLevel(final int level) { configRepository.delete("level_role_" + level); } - public String assignRewardRole(Member member, int newLevel) { + public String assignRewardRole(final Member member, final int newLevel) { String roleName = getRoleForLevel(newLevel); if (roleName == null) return null; diff --git a/src/main/java/creator/loki/feature/level/service/LevelService.java b/src/main/java/creator/loki/feature/level/service/LevelService.java index 146ce54..9e8e4c4 100644 --- a/src/main/java/creator/loki/feature/level/service/LevelService.java +++ b/src/main/java/creator/loki/feature/level/service/LevelService.java @@ -32,7 +32,7 @@ public class LevelService { * @param userId ID пользователя * @return результат повышения уровня или null */ - public LevelUpResult addMessageXP(String userId) { + public LevelUpResult addMessageXP(final String userId) { if (!cooldownService.canReceiveXP(userId)) { return null; } @@ -55,7 +55,7 @@ public class LevelService { return null; } - public LevelUpResult addVoiceXP(String userId, long minutes) { + public LevelUpResult addVoiceXP(final String userId, final long minutes) { UserStats stats = repository.getUserStats(userId); int oldLevel = stats.getLevel(); int addedXP = (int) (minutes * XP_PER_VOICE_MINUTE); @@ -74,7 +74,7 @@ public class LevelService { } /** Получить прогресс пользователя до следующего уровня */ - public LevelProgress getProgress(String userId) { + public LevelProgress getProgress(final String userId) { UserStats stats = repository.getUserStats(userId); int currentLevel = stats.getLevel(); int currentXP = stats.getTotalXP(); @@ -92,12 +92,12 @@ public class LevelService { } /** Получить статистику пользователя */ - public UserStats getUserStats(String userId) { + public UserStats getUserStats(final String userId) { return repository.getUserStats(userId); } /** Получить XP необходимый для следующего уровня */ - public int getXPForNextLevel(int currentLevel) { + public int getXPForNextLevel(final int currentLevel) { return xpFormula.getXpForNextLevel(currentLevel); } } diff --git a/src/main/java/creator/loki/feature/level/service/cooldown/MessageCooldownService.java b/src/main/java/creator/loki/feature/level/service/cooldown/MessageCooldownService.java index 7fc8a36..4743aa6 100644 --- a/src/main/java/creator/loki/feature/level/service/cooldown/MessageCooldownService.java +++ b/src/main/java/creator/loki/feature/level/service/cooldown/MessageCooldownService.java @@ -15,7 +15,7 @@ public class MessageCooldownService { this.repository = repository; } - public boolean canReceiveXP(String userId) { + public boolean canReceiveXP(final String userId) { long now = System.currentTimeMillis(); Long lastTime = lastMessageTimes.get(userId); if (lastTime != null && (now - lastTime) < MESSAGE_COOLDOWN_MS) return false; @@ -25,11 +25,11 @@ public class MessageCooldownService { return dbTime == 0 || (now - dbTime) >= MESSAGE_COOLDOWN_MS; } - public void markMessageSent(String userId) { + public void markMessageSent(final String userId) { lastMessageTimes.put(userId, System.currentTimeMillis()); } - public long getRemainingCooldown(String userId) { + public long getRemainingCooldown(final String userId) { long now = System.currentTimeMillis(); Long lastTime = lastMessageTimes.get(userId); if (lastTime == null) { diff --git a/src/main/java/creator/loki/feature/level/service/tracker/LevelUpNotifier.java b/src/main/java/creator/loki/feature/level/service/tracker/LevelUpNotifier.java index 27a95b9..dc4236b 100644 --- a/src/main/java/creator/loki/feature/level/service/tracker/LevelUpNotifier.java +++ b/src/main/java/creator/loki/feature/level/service/tracker/LevelUpNotifier.java @@ -29,8 +29,7 @@ public class LevelUpNotifier { } /** Отправить уведомление о повышении уровня */ - public void sendLevelUpNotification( - Member member, int oldLevel, int newLevel, MessageChannel channel) { + public void sendLevelUpNotification(final Member member, final int oldLevel, final int newLevel, MessageChannel channel) { LevelProgress progress = levelService.getProgress(member.getId()); String progressBar = buildProgressBar(progress.getPercentage()); @@ -71,7 +70,7 @@ public class LevelUpNotifier { } /** Отправить уведомление о level up в войсе */ - public void sendVoiceLevelUpNotification(Member member, int oldLevel, int newLevel) { + public void sendVoiceLevelUpNotification(final Member member, final int oldLevel, final int newLevel) { String channelId = configRepo.get("levelup.notification_channel_id"); if (channelId == null) { // Если канал не настроен, пропускаем @@ -85,7 +84,7 @@ public class LevelUpNotifier { } /** Получить цвет для уровня */ - private Color getColorForLevel(int level) { + private Color getColorForLevel(final int level) { if (level >= 50) return Color.decode("#FFD700"); // Золотой if (level >= 30) return Color.decode("#E74C3C"); // Красный if (level >= 20) return Color.decode("#9B59B6"); // Фиолетовый @@ -93,7 +92,7 @@ public class LevelUpNotifier { return Color.decode("#2ECC71"); // Зеленый } - private String buildProgressBar(double percentage) { + private String buildProgressBar(final double percentage) { int filled = (int) (percentage / 10); filled = Math.min(filled, 10); int empty = 10 - filled; diff --git a/src/main/java/creator/loki/feature/level/service/tracker/VoiceTracker.java b/src/main/java/creator/loki/feature/level/service/tracker/VoiceTracker.java index c04d9b0..0497710 100644 --- a/src/main/java/creator/loki/feature/level/service/tracker/VoiceTracker.java +++ b/src/main/java/creator/loki/feature/level/service/tracker/VoiceTracker.java @@ -39,7 +39,7 @@ public class VoiceTracker extends ListenerAdapter implements Lifecycle { } @Override - public void onGuildVoiceUpdate(GuildVoiceUpdateEvent event) { + public void onGuildVoiceUpdate(final GuildVoiceUpdateEvent event) { Member member = event.getMember(); String userId = member.getId(); if (member.getUser().isBot()) return; diff --git a/src/main/java/creator/loki/feature/logging/LogSetupPrefixCommand.java b/src/main/java/creator/loki/feature/logging/LogSetupPrefixCommand.java index 82484fe..69db990 100644 --- a/src/main/java/creator/loki/feature/logging/LogSetupPrefixCommand.java +++ b/src/main/java/creator/loki/feature/logging/LogSetupPrefixCommand.java @@ -41,7 +41,7 @@ public class LogSetupPrefixCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!context.getAuthor().hasPermission(Permission.ADMINISTRATOR)) { context.getChannel().sendMessage("❌ У вас нет прав администратора!").queue(); return; @@ -61,7 +61,7 @@ public class LogSetupPrefixCommand implements Command { } } - private void handleModeration(CommandContext context, List args) { + private void handleModeration(final CommandContext context, final List args) { if (args.size() < 2) { context .getChannel() @@ -101,7 +101,7 @@ public class LogSetupPrefixCommand implements Command { .queue(); } - private void handleLevelUp(CommandContext context, List args) { + private void handleLevelUp(final CommandContext context, final List args) { if (args.size() < 2) { context .getChannel() @@ -134,7 +134,7 @@ public class LogSetupPrefixCommand implements Command { .queue(); } - private void handleInfo(CommandContext context) { + private void handleInfo(final CommandContext context) { String moderationChannelId = configRepo.get("moderation.log_channel_id"); String levelupChannelId = configRepo.get("levelup.notification_channel_id"); @@ -156,7 +156,7 @@ public class LogSetupPrefixCommand implements Command { context.getChannel().sendMessageEmbeds(embed.build()).queue(); } - private void sendHelp(CommandContext context) { + private void sendHelp(final CommandContext context) { context .getChannel() .sendMessageEmbeds( diff --git a/src/main/java/creator/loki/feature/metrics/HealthHttpServer.java b/src/main/java/creator/loki/feature/metrics/HealthHttpServer.java index 1414a6b..e8dd41a 100644 --- a/src/main/java/creator/loki/feature/metrics/HealthHttpServer.java +++ b/src/main/java/creator/loki/feature/metrics/HealthHttpServer.java @@ -68,7 +68,7 @@ public class HealthHttpServer implements Lifecycle { } /** Пробуем заданный порт; при {@link BindException} - системный свободный порт (0). */ - private static HttpServer bindHealthServer(int preferredPort) throws Exception { + private static HttpServer bindHealthServer(final int preferredPort) throws Exception { try { return HttpServer.create(new InetSocketAddress(preferredPort), 0); } catch (BindException e) { @@ -78,7 +78,7 @@ public class HealthHttpServer implements Lifecycle { } } - private void handleHealth(HttpExchange exchange) { + private void handleHealth(final HttpExchange exchange) { try { if (!"GET".equalsIgnoreCase(exchange.getRequestMethod())) { exchange.sendResponseHeaders(405, -1); @@ -93,7 +93,7 @@ public class HealthHttpServer implements Lifecycle { byte[] bytes = body.getBytes(StandardCharsets.UTF_8); exchange.getResponseHeaders().add("Content-Type", "application/json; charset=utf-8"); exchange.sendResponseHeaders(200, bytes.length); - try (OutputStream os = exchange.getResponseBody()) { + try (final OutputStream os = exchange.getResponseBody()) { os.write(bytes); } } catch (Exception e) { diff --git a/src/main/java/creator/loki/feature/metrics/MetricsCollector.java b/src/main/java/creator/loki/feature/metrics/MetricsCollector.java index 6c2f14e..d13e4b0 100644 --- a/src/main/java/creator/loki/feature/metrics/MetricsCollector.java +++ b/src/main/java/creator/loki/feature/metrics/MetricsCollector.java @@ -22,30 +22,30 @@ public class MetricsCollector { LoggerDecorator.bot(logger, "MetricsCollector инициализирован"); } - public void recordCommand(String commandName, long executionTimeMs) { + public void recordCommand(final String commandName, final long executionTimeMs) { var entry = commands.computeIfAbsent(commandName, k -> new CommandEntry()); entry.count.increment(); entry.totalTime.addAndGet(executionTimeMs); totalCommands.increment(); } - public void recordError(String commandName) { + public void recordError(final String commandName) { var entry = commands.computeIfAbsent(commandName, k -> new CommandEntry()); entry.errors.increment(); totalErrors.increment(); } - public long getCommandCount(String commandName) { + public long getCommandCount(final String commandName) { var entry = commands.get(commandName); return entry != null ? entry.count.sum() : 0; } - public long getCommandErrors(String commandName) { + public long getCommandErrors(final String commandName) { var entry = commands.get(commandName); return entry != null ? entry.errors.sum() : 0; } - public double getAverageExecutionTime(String commandName) { + public double getAverageExecutionTime(final String commandName) { var entry = commands.get(commandName); var count = entry != null ? entry.count.sum() : 0; return count == 0 ? 0.0 : (double) entry.totalTime.get() / count; @@ -82,7 +82,7 @@ public class MetricsCollector { getErrorRate()); } - private static String jsonQuoted(String s) { + private static String jsonQuoted(final String s) { return '"' + s.replace("\\", "\\\\") .replace("\"", "\\\"") @@ -92,7 +92,7 @@ public class MetricsCollector { + '"'; } - public String getTopCommands(int limit) { + public String getTopCommands(final int limit) { var sb = new StringBuilder(); sb.append("📊 Топ команд:\n"); commands.entrySet().stream() diff --git a/src/main/java/creator/loki/feature/metrics/commands/MetricsCommand.java b/src/main/java/creator/loki/feature/metrics/commands/MetricsCommand.java index dcc4c47..5c9e49b 100644 --- a/src/main/java/creator/loki/feature/metrics/commands/MetricsCommand.java +++ b/src/main/java/creator/loki/feature/metrics/commands/MetricsCommand.java @@ -21,7 +21,7 @@ public class MetricsCommand implements Command { } @Override - public void execute(CommandContext ctx) { + public void execute(final CommandContext ctx) { if (ctx.getAuthor() == null || !ctx.getAuthor().hasPermission(Permission.ADMINISTRATOR)) { ctx.getChannel() .sendMessageEmbeds( diff --git a/src/main/java/creator/loki/feature/moderation/ModerationCommandRegistrar.java b/src/main/java/creator/loki/feature/moderation/ModerationCommandRegistrar.java index 36afa96..37e2e31 100644 --- a/src/main/java/creator/loki/feature/moderation/ModerationCommandRegistrar.java +++ b/src/main/java/creator/loki/feature/moderation/ModerationCommandRegistrar.java @@ -56,7 +56,7 @@ public class ModerationCommandRegistrar implements CommandRegistrar { } @Override - public void register(CommandRegistry registry) { + public void register(final CommandRegistry registry) { registry.register(PunishCommand.ban()); registry.register(PunishCommand.kick()); registry.register( diff --git a/src/main/java/creator/loki/feature/moderation/ModerationModule.java b/src/main/java/creator/loki/feature/moderation/ModerationModule.java index a74c6b9..d0593d9 100644 --- a/src/main/java/creator/loki/feature/moderation/ModerationModule.java +++ b/src/main/java/creator/loki/feature/moderation/ModerationModule.java @@ -25,34 +25,31 @@ public class ModerationModule extends AbstractModule { @Provides @Singleton - WarningRepository provideWarningRepository(Database database) { + WarningRepository provideWarningRepository(final Database database) { return new SqlWarningRepository(database); } @Provides @Singleton - ModerationCaseRepository provideModerationCaseRepository(Database database) { + ModerationCaseRepository provideModerationCaseRepository(final Database database) { return new SqlModerationCaseRepository(database); } @Provides @Singleton - ActiveMuteRepository provideActiveMuteRepository(Database database) { + ActiveMuteRepository provideActiveMuteRepository(final Database database) { return new SqlActiveMuteRepository(database); } @Provides @Singleton - MuteRoleService provideMuteRoleService(GuildConfigRepository guildConfigRepository) { + MuteRoleService provideMuteRoleService(final GuildConfigRepository guildConfigRepository) { return new MuteRoleService(guildConfigRepository); } @Provides @Singleton - MuteScheduler provideMuteScheduler( - ActiveMuteRepository activeMuteRepository, - ModerationCaseRepository moderationCaseRepository, - GuildConfigRepository guildConfigRepository) { + MuteScheduler provideMuteScheduler(final ActiveMuteRepository activeMuteRepository, final ModerationCaseRepository moderationCaseRepository, final GuildConfigRepository guildConfigRepository) { return new MuteScheduler(activeMuteRepository, moderationCaseRepository, guildConfigRepository); } } diff --git a/src/main/java/creator/loki/feature/moderation/MuteRoleService.java b/src/main/java/creator/loki/feature/moderation/MuteRoleService.java index 3181912..d6798b2 100644 --- a/src/main/java/creator/loki/feature/moderation/MuteRoleService.java +++ b/src/main/java/creator/loki/feature/moderation/MuteRoleService.java @@ -40,7 +40,7 @@ public class MuteRoleService { } /** Возвращает существующую роль или создаёт новую и настраивает оверрайды по каналам. */ - public Role getOrCreateMuteRole(Guild guild) { + public Role getOrCreateMuteRole(final Guild guild) { String gid = guild.getId(); String stored = guildConfig.get(gid, CONFIG_KEY_MUTE_ROLE_ID); if (stored != null) { @@ -78,7 +78,7 @@ public class MuteRoleService { return mute; } - public void syncChannelOverrides(Guild guild, Role muteRole) { + public void syncChannelOverrides(final Guild guild, final Role muteRole) { for (TextChannel ch : guild.getTextChannels()) { applyTextDeny(ch, muteRole); } @@ -96,7 +96,7 @@ public class MuteRoleService { } } - private static void applyTextDeny(TextChannel channel, Role muteRole) { + private static void applyTextDeny(final TextChannel channel, final Role muteRole) { channel .upsertPermissionOverride(muteRole) .deny(TEXT_DENY) @@ -104,7 +104,7 @@ public class MuteRoleService { s -> {}, e -> logger.debug("mute text override {}: {}", channel.getId(), e.toString())); } - private static void applyTextDeny(NewsChannel channel, Role muteRole) { + private static void applyTextDeny(final NewsChannel channel, final Role muteRole) { channel .upsertPermissionOverride(muteRole) .deny(TEXT_DENY) @@ -112,7 +112,7 @@ public class MuteRoleService { s -> {}, e -> logger.debug("mute news override {}: {}", channel.getId(), e.toString())); } - private static void applyTextDeny(ForumChannel channel, Role muteRole) { + private static void applyTextDeny(final ForumChannel channel, final Role muteRole) { channel .upsertPermissionOverride(muteRole) .deny(TEXT_DENY) @@ -121,7 +121,7 @@ public class MuteRoleService { e -> logger.debug("mute forum override {}: {}", channel.getId(), e.toString())); } - private static void applyVoiceDeny(VoiceChannel channel, Role muteRole) { + private static void applyVoiceDeny(final VoiceChannel channel, final Role muteRole) { channel .upsertPermissionOverride(muteRole) .deny(VOICE_DENY) @@ -130,7 +130,7 @@ public class MuteRoleService { e -> logger.debug("mute voice override {}: {}", channel.getId(), e.toString())); } - private static void applyVoiceDeny(StageChannel channel, Role muteRole) { + private static void applyVoiceDeny(final StageChannel channel, final Role muteRole) { channel .upsertPermissionOverride(muteRole) .deny(VOICE_DENY) diff --git a/src/main/java/creator/loki/feature/moderation/MuteScheduler.java b/src/main/java/creator/loki/feature/moderation/MuteScheduler.java index ce61239..9811a4e 100644 --- a/src/main/java/creator/loki/feature/moderation/MuteScheduler.java +++ b/src/main/java/creator/loki/feature/moderation/MuteScheduler.java @@ -59,7 +59,7 @@ public class MuteScheduler implements Lifecycle { logger.info("Восстановлены таймеры мутов: {} записей", pending.size()); } - public void scheduleExpiry(String guildId, String userId, long endsAtMs) { + public void scheduleExpiry(final String guildId, final String userId, final long endsAtMs) { if (endsAtMs <= 0) { return; } @@ -86,14 +86,14 @@ public class MuteScheduler implements Lifecycle { }); } - public void cancelPending(String guildId, String userId) { + public void cancelPending(final String guildId, final String userId) { ScheduledFuture f = futures.remove(key(guildId, userId)); if (f != null) { f.cancel(false); } } - private void performAutoUnmute(JDA jda, String guildId, String userId) { + private void performAutoUnmute(final JDA jda, final String guildId, final String userId) { futures.remove(key(guildId, userId)); Guild g = jda.getGuildById(guildId); if (g == null) { @@ -117,7 +117,7 @@ public class MuteScheduler implements Lifecycle { cases.insert(guildId, "UNMUTE", userId, botId, "Истёк срок мута", null, null); } - private static String key(String guildId, String userId) { + private static String key(final String guildId, final String userId) { return guildId + ":" + userId; } diff --git a/src/main/java/creator/loki/feature/moderation/commands/caselookup/CaseLookupCommand.java b/src/main/java/creator/loki/feature/moderation/commands/caselookup/CaseLookupCommand.java index c569d45..b755c1b 100644 --- a/src/main/java/creator/loki/feature/moderation/commands/caselookup/CaseLookupCommand.java +++ b/src/main/java/creator/loki/feature/moderation/commands/caselookup/CaseLookupCommand.java @@ -13,7 +13,7 @@ import creator.loki.command.CommandCategories; public class CaseLookupCommand implements Command { private final ModerationCaseRepository cases; - public CaseLookupCommand(ModerationCaseRepository cr) { + public CaseLookupCommand(final ModerationCaseRepository cr) { cases = cr; } @@ -38,7 +38,7 @@ public class CaseLookupCommand implements Command { } @Override - public void execute(CommandContext ctx) { + public void execute(final CommandContext ctx) { var g = ctx.getGuild(); if (g == null) { ModerationHelper.error(ctx, "Команда только на сервере"); diff --git a/src/main/java/creator/loki/feature/moderation/commands/punish/MuteCommand.java b/src/main/java/creator/loki/feature/moderation/commands/punish/MuteCommand.java index 05f153e..22117ba 100644 --- a/src/main/java/creator/loki/feature/moderation/commands/punish/MuteCommand.java +++ b/src/main/java/creator/loki/feature/moderation/commands/punish/MuteCommand.java @@ -29,12 +29,7 @@ public class MuteCommand implements Command { private final MuteRoleService muteRoleService; private final MuteScheduler muteScheduler; - public MuteCommand( - ModerationCaseRepository c, - ActiveMuteRepository a, - ConfigRepository cr, - MuteRoleService mrs, - MuteScheduler ms) { + public MuteCommand(final ModerationCaseRepository c, final ActiveMuteRepository a, final ConfigRepository cr, final MuteRoleService mrs, final MuteScheduler ms) { cases = c; activeMutes = a; configRepo = cr; @@ -62,7 +57,7 @@ public class MuteCommand implements Command { } @Override - public void execute(CommandContext ctx) { + public void execute(final CommandContext ctx) { var g = ctx.getGuild(); if (g == null) { err(ctx, "Только на сервере"); @@ -101,8 +96,7 @@ public class MuteCommand implements Command { applyMuteRole(ctx, g, target, muteRole, caseId, parsed.dur, parsed.reason, mod); } - private boolean validateMute( - CommandContext ctx, Member target, Member mod, net.dv8tion.jda.api.entities.Guild g) { + private boolean validateMute(final CommandContext ctx, final Member target, final Member mod, final net.dv8tion.jda.api.entities.Guild g) { if (target.getId().equals(mod.getId())) { err(ctx, "Нельзя замутить себя"); return false; @@ -120,7 +114,7 @@ public class MuteCommand implements Command { private record ParsedDuration(MuteDurationParser.MuteDuration dur, String reason) {} - private ParsedDuration parseDurationAndReason(CommandContext ctx) { + private ParsedDuration parseDurationAndReason(final CommandContext ctx) { MuteDurationParser.MuteDuration dur = null; String durToken = null; for (String a : ctx.getArgs()) { @@ -152,12 +146,7 @@ public class MuteCommand implements Command { return new ParsedDuration(dur, reason); } - private long createMuteCase( - net.dv8tion.jda.api.entities.Guild g, - Member target, - Member mod, - MuteDurationParser.MuteDuration dur, - String reason) { + private long createMuteCase(final net.dv8tion.jda.api.entities.Guild g, final Member target, final Member mod, final MuteDurationParser.MuteDuration dur, final String reason) { boolean permanent = dur.permanent(); long secs = dur.secondsTotal(); long untilMs = permanent ? 0L : System.currentTimeMillis() + secs * 1000; @@ -178,15 +167,7 @@ public class MuteCommand implements Command { return caseId; } - private void applyMuteRole( - CommandContext ctx, - net.dv8tion.jda.api.entities.Guild g, - Member target, - Role muteRole, - long caseId, - MuteDurationParser.MuteDuration dur, - String reason, - Member mod) { + private void applyMuteRole(final CommandContext ctx, final net.dv8tion.jda.api.entities.Guild g, final Member target, final Role muteRole, final long caseId, final MuteDurationParser.MuteDuration dur, final String reason, final Member mod) { boolean permanent = dur.permanent(); long secs = dur.secondsTotal(); long untilMs = permanent ? 0L : System.currentTimeMillis() + secs * 1000; @@ -205,12 +186,7 @@ public class MuteCommand implements Command { }); } - private net.dv8tion.jda.api.entities.MessageEmbed buildMuteConfirmEmbed( - Member target, - long caseId, - MuteDurationParser.MuteDuration dur, - String reason, - long untilMs) { + private net.dv8tion.jda.api.entities.MessageEmbed buildMuteConfirmEmbed(final Member target, final long caseId, final MuteDurationParser.MuteDuration dur, final String reason, final long untilMs) { boolean permanent = dur.permanent(); return EmbedFactory.create() .withTitle("✅ Мут выдан") @@ -229,14 +205,7 @@ public class MuteCommand implements Command { .build(); } - private void sendMuteLogEmbed( - net.dv8tion.jda.api.entities.Guild g, - Member target, - Member mod, - long caseId, - MuteDurationParser.MuteDuration dur, - String reason, - long untilMs) { + private void sendMuteLogEmbed(final net.dv8tion.jda.api.entities.Guild g, final Member target, final Member mod, final long caseId, final MuteDurationParser.MuteDuration dur, final String reason, final long untilMs) { var logId = configRepo.get("moderation.log_channel_id"); if (logId == null) return; var log = g.getTextChannelById(logId); @@ -256,7 +225,7 @@ public class MuteCommand implements Command { .queue(); } - private static void err(CommandContext ctx, String msg) { + private static void err(final CommandContext ctx, final String msg) { ModerationHelper.error(ctx, msg); } } diff --git a/src/main/java/creator/loki/feature/moderation/commands/punish/PunishCommand.java b/src/main/java/creator/loki/feature/moderation/commands/punish/PunishCommand.java index 7dfaf0c..c3ce774 100644 --- a/src/main/java/creator/loki/feature/moderation/commands/punish/PunishCommand.java +++ b/src/main/java/creator/loki/feature/moderation/commands/punish/PunishCommand.java @@ -39,8 +39,7 @@ public final class PunishCommand { void exec(Guild g, Member t, String r); } - private static Command simplePunish( - Permission perm, String action, String name, String desc, String usage, Punisher p) { + private static Command simplePunish(final Permission perm, final String action, final String name, final String desc, final String usage, final Punisher p) { return new Command() { @Override public String getName() { @@ -63,7 +62,7 @@ public final class PunishCommand { } @Override - public void execute(CommandContext ctx) { + public void execute(final CommandContext ctx) { var t = modTarget(ctx, perm, action); if (t == null) return; var reason = @@ -84,7 +83,7 @@ public final class PunishCommand { }; } - private static Member modTarget(CommandContext ctx, Permission perm, String action) { + private static Member modTarget(final CommandContext ctx, final Permission perm, final String action) { var g = ctx.getGuild(); if (g == null) { err(ctx, "Только на сервере"); @@ -124,7 +123,7 @@ public final class PunishCommand { return t; } - private static void err(CommandContext ctx, String msg) { + private static void err(final CommandContext ctx, final String msg) { ModerationHelper.error(ctx, msg); } } diff --git a/src/main/java/creator/loki/feature/moderation/commands/punish/UnmuteCommand.java b/src/main/java/creator/loki/feature/moderation/commands/punish/UnmuteCommand.java index f95ef87..347dc3c 100644 --- a/src/main/java/creator/loki/feature/moderation/commands/punish/UnmuteCommand.java +++ b/src/main/java/creator/loki/feature/moderation/commands/punish/UnmuteCommand.java @@ -25,12 +25,7 @@ public class UnmuteCommand implements Command { private final GuildConfigRepository guildConfig; private final MuteScheduler muteScheduler; - public UnmuteCommand( - ModerationCaseRepository c, - ActiveMuteRepository a, - ConfigRepository cr, - GuildConfigRepository gc, - MuteScheduler ms) { + public UnmuteCommand(final ModerationCaseRepository c, final ActiveMuteRepository a, final ConfigRepository cr, final GuildConfigRepository gc, final MuteScheduler ms) { cases = c; activeMutes = a; configRepo = cr; @@ -59,7 +54,7 @@ public class UnmuteCommand implements Command { } @Override - public void execute(CommandContext ctx) { + public void execute(final CommandContext ctx) { var g = ctx.getGuild(); if (g == null) { err(ctx, "Только на сервере"); @@ -138,11 +133,11 @@ public class UnmuteCommand implements Command { err2 -> err(ctx, "Ошибка снятия роли")); } - private static String trunc(String s, int max) { + private static String trunc(final String s, final int max) { return ModerationHelper.trunc(s, max); } - private static void err(CommandContext ctx, String msg) { + private static void err(final CommandContext ctx, final String msg) { ModerationHelper.error(ctx, msg); } } diff --git a/src/main/java/creator/loki/feature/moderation/commands/swap/SwapCommand.java b/src/main/java/creator/loki/feature/moderation/commands/swap/SwapCommand.java index a91c41f..01687c3 100644 --- a/src/main/java/creator/loki/feature/moderation/commands/swap/SwapCommand.java +++ b/src/main/java/creator/loki/feature/moderation/commands/swap/SwapCommand.java @@ -33,7 +33,7 @@ public class SwapCommand implements Command { } @Override - public void execute(CommandContext ctx) { + public void execute(final CommandContext ctx) { var g = ctx.getGuild(); if (g == null) { ModerationHelper.error(ctx, "Команда доступна только на сервере"); diff --git a/src/main/java/creator/loki/feature/moderation/commands/utils/ClearCommand.java b/src/main/java/creator/loki/feature/moderation/commands/utils/ClearCommand.java index 8bb9bcf..7f4b112 100644 --- a/src/main/java/creator/loki/feature/moderation/commands/utils/ClearCommand.java +++ b/src/main/java/creator/loki/feature/moderation/commands/utils/ClearCommand.java @@ -35,7 +35,7 @@ public class ClearCommand implements Command { } @Override - public void execute(CommandContext ctx) { + public void execute(final CommandContext ctx) { var mod = ctx.getAuthor(); if (mod == null || !mod.hasPermission(Permission.MESSAGE_MANAGE)) { err(ctx, "Нет прав на управление сообщениями"); @@ -96,7 +96,7 @@ public class ClearCommand implements Command { }); } - private static void err(CommandContext ctx, String msg) { + private static void err(final CommandContext ctx, final String msg) { ctx.getChannel().sendMessageEmbeds(EmbedTemplates.error("Ошибка", msg)).queue(); } } diff --git a/src/main/java/creator/loki/feature/moderation/commands/utils/ClearSlashCommands.java b/src/main/java/creator/loki/feature/moderation/commands/utils/ClearSlashCommands.java index d5aba6e..9352e51 100644 --- a/src/main/java/creator/loki/feature/moderation/commands/utils/ClearSlashCommands.java +++ b/src/main/java/creator/loki/feature/moderation/commands/utils/ClearSlashCommands.java @@ -16,7 +16,7 @@ import org.jetbrains.annotations.NotNull; public class ClearSlashCommands extends ListenerAdapter { @Override - public void onSlashCommandInteraction(@NotNull SlashCommandInteractionEvent event) { + public void onSlashCommandInteraction(@NotNull final SlashCommandInteractionEvent event) { if (!event.getName().equals("clear")) return; var member = event.getMember(); diff --git a/src/main/java/creator/loki/feature/moderation/commands/utils/SlowmodeCommand.java b/src/main/java/creator/loki/feature/moderation/commands/utils/SlowmodeCommand.java index fb3ea5c..1162919 100644 --- a/src/main/java/creator/loki/feature/moderation/commands/utils/SlowmodeCommand.java +++ b/src/main/java/creator/loki/feature/moderation/commands/utils/SlowmodeCommand.java @@ -29,7 +29,7 @@ public class SlowmodeCommand implements Command { } @Override - public void execute(CommandContext ctx) { + public void execute(final CommandContext ctx) { var g = ctx.getGuild(); if (g == null) { err(ctx, "Только на сервере"); @@ -82,7 +82,7 @@ public class SlowmodeCommand implements Command { err2 -> err(ctx, "Не удалось применить slowmode.")); } - private static void err(CommandContext ctx, String msg) { + private static void err(final CommandContext ctx, final String msg) { ctx.getChannel().sendMessageEmbeds(EmbedTemplates.error("Ошибка", msg)).queue(); } } diff --git a/src/main/java/creator/loki/feature/moderation/commands/warn/UnwarnCommand.java b/src/main/java/creator/loki/feature/moderation/commands/warn/UnwarnCommand.java index 72c0bbf..62d5f99 100644 --- a/src/main/java/creator/loki/feature/moderation/commands/warn/UnwarnCommand.java +++ b/src/main/java/creator/loki/feature/moderation/commands/warn/UnwarnCommand.java @@ -10,7 +10,7 @@ import creator.loki.command.CommandCategories; public class UnwarnCommand implements Command { private final WarningRepository warnings; - public UnwarnCommand(WarningRepository wr) { + public UnwarnCommand(final WarningRepository wr) { warnings = wr; } @@ -35,7 +35,7 @@ public class UnwarnCommand implements Command { } @Override - public void execute(CommandContext ctx) { + public void execute(final CommandContext ctx) { var g = ctx.getGuild(); if (g == null) { err(ctx, "Только на сервере"); @@ -80,7 +80,7 @@ public class UnwarnCommand implements Command { .queue(); } - private static void err(CommandContext ctx, String msg) { + private static void err(final CommandContext ctx, final String msg) { ctx.getChannel().sendMessageEmbeds(EmbedTemplates.error("Ошибка", msg)).queue(); } } diff --git a/src/main/java/creator/loki/feature/moderation/commands/warn/WarnCommand.java b/src/main/java/creator/loki/feature/moderation/commands/warn/WarnCommand.java index f31339b..acd47e5 100644 --- a/src/main/java/creator/loki/feature/moderation/commands/warn/WarnCommand.java +++ b/src/main/java/creator/loki/feature/moderation/commands/warn/WarnCommand.java @@ -31,13 +31,7 @@ public class WarnCommand implements Command { private final MuteScheduler muteScheduler; private final ModerationCaseRepository cases; - public WarnCommand( - WarningRepository wr, - ConfigRepository cr, - MuteRoleService mrs, - ActiveMuteRepository am, - MuteScheduler ms, - ModerationCaseRepository mc) { + public WarnCommand(final WarningRepository wr, final ConfigRepository cr, final MuteRoleService mrs, final ActiveMuteRepository am, final MuteScheduler ms, final ModerationCaseRepository mc) { warnings = wr; configRepo = cr; muteRoleService = mrs; @@ -67,12 +61,12 @@ public class WarnCommand implements Command { } @Override - public void execute(CommandContext ctx) { + public void execute(final CommandContext ctx) { var t = validateInput(ctx); if (t != null) saveWarning(ctx, t); } - private Member validateInput(CommandContext ctx) { + private Member validateInput(final CommandContext ctx) { var g = ctx.getGuild(); if (g == null) { ModerationHelper.error(ctx, "Только на сервере"); @@ -100,7 +94,7 @@ public class WarnCommand implements Command { return t; } - private void saveWarning(CommandContext ctx, Member t) { + private void saveWarning(final CommandContext ctx, final Member t) { var g = ctx.getGuild(); var mod = ctx.getAuthor(); var reason = ctx.getArgs().stream().skip(1).collect(Collectors.joining(" ")).trim(); @@ -130,7 +124,7 @@ public class WarnCommand implements Command { logWarn(g, mod, t, id, reason, total); } - private void logWarn(Guild g, Member mod, Member t, long warnId, String reason, int total) { + private void logWarn(final Guild g, final Member mod, final Member t, final long warnId, String reason, final int total) { var logId = configRepo.get("moderation.log_channel_id"); if (logId == null) return; var log = g.getTextChannelById(logId); @@ -149,7 +143,7 @@ public class WarnCommand implements Command { .queue(s -> {}, e -> {}); } - private void applyAutoMute(Guild g, Member mod, Member t, CommandContext ctx, int totalWarns) { + private void applyAutoMute(final Guild g, final Member mod, final Member t, final CommandContext ctx, final int totalWarns) { Role muteRole; try { muteRole = muteRoleService.getOrCreateMuteRole(g); diff --git a/src/main/java/creator/loki/feature/moderation/commands/warn/WarningsHistoryCommand.java b/src/main/java/creator/loki/feature/moderation/commands/warn/WarningsHistoryCommand.java index 0275aa6..5224f7c 100644 --- a/src/main/java/creator/loki/feature/moderation/commands/warn/WarningsHistoryCommand.java +++ b/src/main/java/creator/loki/feature/moderation/commands/warn/WarningsHistoryCommand.java @@ -14,7 +14,7 @@ import creator.loki.command.CommandCategories; public class WarningsHistoryCommand implements Command { private final WarningRepository warnings; - public WarningsHistoryCommand(WarningRepository wr) { + public WarningsHistoryCommand(final WarningRepository wr) { warnings = wr; } @@ -39,7 +39,7 @@ public class WarningsHistoryCommand implements Command { } @Override - public void execute(CommandContext ctx) { + public void execute(final CommandContext ctx) { var g = ctx.getGuild(); if (g == null) { err(ctx, "Только на сервере"); @@ -92,11 +92,11 @@ public class WarningsHistoryCommand implements Command { .queue(); } - private static String trunc(String s, int max) { + private static String trunc(final String s, final int max) { return s.length() <= max ? s : s.substring(0, max - 1) + "…"; } - private static void err(CommandContext ctx, String msg) { + private static void err(final CommandContext ctx, final String msg) { ctx.getChannel().sendMessageEmbeds(EmbedTemplates.error("Ошибка", msg)).queue(); } } diff --git a/src/main/java/creator/loki/feature/moderation/log/LogEmbeds.java b/src/main/java/creator/loki/feature/moderation/log/LogEmbeds.java index 0415621..da90529 100644 --- a/src/main/java/creator/loki/feature/moderation/log/LogEmbeds.java +++ b/src/main/java/creator/loki/feature/moderation/log/LogEmbeds.java @@ -8,8 +8,7 @@ import net.dv8tion.jda.api.audit.AuditLogEntry; public final class LogEmbeds { private LogEmbeds() {} - public static EmbedBuilder messageDelete( - AuditLogEntry entry, String channelMention, String content) { + public static EmbedBuilder messageDelete(final AuditLogEntry entry, final String channelMention, final String content) { var eb = new EmbedBuilder() .setTitle("🗑️ Сообщение удалено") @@ -24,8 +23,7 @@ public final class LogEmbeds { return eb; } - public static EmbedBuilder messageBulkDelete( - AuditLogEntry entry, String channelMention, int count) { + public static EmbedBuilder messageBulkDelete(final AuditLogEntry entry, final String channelMention, final int count) { var eb = new EmbedBuilder() .setTitle("🗑️ Массовое удаление сообщений") @@ -38,8 +36,7 @@ public final class LogEmbeds { return eb; } - public static EmbedBuilder ban( - String userMention, String moderatorMention, String reason, String avatarUrl) { + public static EmbedBuilder ban(final String userMention, final String moderatorMention, final String reason, final String avatarUrl) { return new EmbedBuilder() .setTitle("🔨 Пользователь забанен") .addField("Пользователь", userMention, true) @@ -49,7 +46,7 @@ public final class LogEmbeds { .setThumbnail(avatarUrl); } - public static EmbedBuilder unban(String userMention, String moderatorMention, String avatarUrl) { + public static EmbedBuilder unban(final String userMention, final String moderatorMention, final String avatarUrl) { return new EmbedBuilder() .setTitle("✅ Пользователь разбанен") .addField("Пользователь", userMention, true) @@ -58,8 +55,7 @@ public final class LogEmbeds { .setThumbnail(avatarUrl); } - public static EmbedBuilder kick( - String userMention, String moderatorMention, String reason, String avatarUrl) { + public static EmbedBuilder kick(final String userMention, final String moderatorMention, final String reason, final String avatarUrl) { return new EmbedBuilder() .setTitle("👢 Пользователь кикнут") .addField("Пользователь", userMention, true) @@ -69,8 +65,7 @@ public final class LogEmbeds { .setThumbnail(avatarUrl); } - public static EmbedBuilder timeout( - String userMention, String moderatorMention, boolean muted, Long endEpoch, String reason) { + public static EmbedBuilder timeout(final String userMention, final String moderatorMention, final boolean muted, final Long endEpoch, final String reason) { var eb = new EmbedBuilder() .setTitle(muted ? "🔇 Пользователь замучен" : "🔊 Мут снят") @@ -82,8 +77,7 @@ public final class LogEmbeds { return eb; } - public static EmbedBuilder voiceMute( - String userMention, String channelMention, boolean muted, String moderatorMention) { + public static EmbedBuilder voiceMute(final String userMention, final String channelMention, final boolean muted, final String moderatorMention) { var eb = new EmbedBuilder() .setTitle(muted ? "🔇 Микрофон отключён" : "🎤 Микрофон включён") @@ -94,8 +88,7 @@ public final class LogEmbeds { return eb; } - public static EmbedBuilder voiceDeafen( - String userMention, String channelMention, boolean deafened, String moderatorMention) { + public static EmbedBuilder voiceDeafen(final String userMention, final String channelMention, final boolean deafened, final String moderatorMention) { var eb = new EmbedBuilder() .setTitle(deafened ? "🔇 Звук отключён" : "🔊 Звук включён") @@ -106,7 +99,7 @@ public final class LogEmbeds { return eb; } - private static String truncate(String text, int maxLen) { + private static String truncate(final String text, final int maxLen) { if (text.length() <= maxLen) return text; return text.substring(0, maxLen) + "..."; } diff --git a/src/main/java/creator/loki/feature/moderation/log/ModerationLogger.java b/src/main/java/creator/loki/feature/moderation/log/ModerationLogger.java index 14b4d6d..c40bdcd 100644 --- a/src/main/java/creator/loki/feature/moderation/log/ModerationLogger.java +++ b/src/main/java/creator/loki/feature/moderation/log/ModerationLogger.java @@ -33,8 +33,7 @@ public class ModerationLogger extends ListenerAdapter { this.messageCache = messageCache; } - private void handle( - Guild g, ActionType t, int l, Function, EmbedBuilder> fn) { + private void handle(final Guild g, final ActionType t, final int l, final Function, EmbedBuilder> fn) { var log = g.getTextChannelById(configRepo.get("moderation.log_channel_id")); if (log == null) return; var al = g.retrieveAuditLogs().type(t).limit(l); @@ -51,7 +50,7 @@ public class ModerationLogger extends ListenerAdapter { handle(e.getGuild(), ActionType.MESSAGE_DELETE, 1, l -> md(e, content, l)); } - private EmbedBuilder md(MessageDeleteEvent e, String c, List l) { + private EmbedBuilder md(MessageDeleteEvent e, final String c, final List l) { var entry = l.isEmpty() ? null : l.get(0); return LogEmbeds.messageDelete(entry, e.getChannel().getAsMention(), c); } @@ -60,17 +59,17 @@ public class ModerationLogger extends ListenerAdapter { handle(e.getGuild(), ActionType.MESSAGE_BULK_DELETE, 1, l -> mbd(e, l)); } - private EmbedBuilder mbd(MessageBulkDeleteEvent e, List l) { + private EmbedBuilder mbd(MessageBulkDeleteEvent e, final List l) { var entry = l.isEmpty() ? null : l.get(0); var size = e.getMessageIds().size(); return LogEmbeds.messageBulkDelete(entry, e.getChannel().getAsMention(), size); } - public void onGuildBan(GuildBanEvent ev) { + public void onGuildBan(final GuildBanEvent ev) { handle(ev.getGuild(), ActionType.BAN, 1, l -> b(ev, l)); } - private EmbedBuilder b(GuildBanEvent ev, List l) { + private EmbedBuilder b(final GuildBanEvent ev, final List l) { if (l.isEmpty()) return null; var user = ev.getUser(); var e = l.get(0); @@ -79,11 +78,11 @@ public class ModerationLogger extends ListenerAdapter { return LogEmbeds.ban(user.getAsMention(), mod, reason, user.getAvatarUrl()); } - public void onGuildUnban(GuildUnbanEvent ev) { + public void onGuildUnban(final GuildUnbanEvent ev) { handle(ev.getGuild(), ActionType.UNBAN, 1, l -> ub(ev, l)); } - private EmbedBuilder ub(GuildUnbanEvent ev, List l) { + private EmbedBuilder ub(final GuildUnbanEvent ev, final List l) { if (l.isEmpty()) return null; var user = ev.getUser(); var e = l.get(0); @@ -91,11 +90,11 @@ public class ModerationLogger extends ListenerAdapter { return LogEmbeds.unban(user.getAsMention(), mod, user.getAvatarUrl()); } - public void onGuildMemberRemove(GuildMemberRemoveEvent ev) { + public void onGuildMemberRemove(final GuildMemberRemoveEvent ev) { handle(ev.getGuild(), ActionType.KICK, 1, l -> k(ev, l)); } - private EmbedBuilder k(GuildMemberRemoveEvent ev, List l) { + private EmbedBuilder k(final GuildMemberRemoveEvent ev, final List l) { if (l.isEmpty()) return null; var e = l.get(0); if (!e.getTargetId().equals(ev.getUser().getId())) return null; @@ -104,12 +103,12 @@ public class ModerationLogger extends ListenerAdapter { return LogEmbeds.kick(ev.getUser().getAsMention(), mod, reason, ev.getUser().getAvatarUrl()); } - public void onGuildMemberUpdateTimeOut(GuildMemberUpdateTimeOutEvent e) { + public void onGuildMemberUpdateTimeOut(final GuildMemberUpdateTimeOutEvent e) { var muted = e.getNewTimeOutEnd() != null; handle(e.getGuild(), ActionType.MEMBER_UPDATE, 5, l -> t(e, muted, l)); } - private EmbedBuilder t(GuildMemberUpdateTimeOutEvent e, boolean muted, List l) { + private EmbedBuilder t(final GuildMemberUpdateTimeOutEvent e, boolean muted, final List l) { var entry = findEntry(l, e.getUser().getId()); if (entry == null) return null; var mod = entry.getUser() != null ? entry.getUser().getAsMention() : "Неизвестно"; @@ -117,12 +116,12 @@ public class ModerationLogger extends ListenerAdapter { return LogEmbeds.timeout(e.getUser().getAsMention(), mod, muted, end, entry.getReason()); } - public void onGuildVoiceGuildMute(GuildVoiceGuildMuteEvent e) { + public void onGuildVoiceGuildMute(final GuildVoiceGuildMuteEvent e) { var muted = e.isGuildMuted(); handle(e.getGuild(), ActionType.MEMBER_UPDATE, 5, l -> vm(e, muted, l)); } - private EmbedBuilder vm(GuildVoiceGuildMuteEvent e, boolean muted, List l) { + private EmbedBuilder vm(final GuildVoiceGuildMuteEvent e, final boolean muted, final List l) { var member = e.getMember(); var ch = e.getVoiceState().getChannel(); var entry = findEntry(l, member.getId(), "mute"); @@ -130,12 +129,12 @@ public class ModerationLogger extends ListenerAdapter { return LogEmbeds.voiceMute(member.getAsMention(), ch.getAsMention(), muted, mod); } - public void onGuildVoiceGuildDeafen(GuildVoiceGuildDeafenEvent e) { + public void onGuildVoiceGuildDeafen(final GuildVoiceGuildDeafenEvent e) { var deaf = e.isGuildDeafened(); handle(e.getGuild(), ActionType.MEMBER_UPDATE, 5, l -> vd(e, deaf, l)); } - private EmbedBuilder vd(GuildVoiceGuildDeafenEvent e, boolean deaf, List l) { + private EmbedBuilder vd(final GuildVoiceGuildDeafenEvent e, final boolean deaf, final List l) { var member = e.getMember(); var ch = e.getVoiceState().getChannel(); var entry = findEntry(l, member.getId(), "deaf"); @@ -143,7 +142,7 @@ public class ModerationLogger extends ListenerAdapter { return LogEmbeds.voiceDeafen(member.getAsMention(), ch.getAsMention(), deaf, mod); } - private AuditLogEntry findEntry(List l, String targetId, String... key) { + private AuditLogEntry findEntry(final List l, final String targetId, final String... key) { var s = l.stream().filter(e -> targetId.equals(e.getTargetId())); if (key.length > 0) s = s.filter(e -> e.getChangeByKey(key[0]) != null); return s.findFirst().orElse(null); diff --git a/src/main/java/creator/loki/feature/moderation/repository/ActiveMuteRepository.java b/src/main/java/creator/loki/feature/moderation/repository/ActiveMuteRepository.java index be9d398..5fb739a 100644 --- a/src/main/java/creator/loki/feature/moderation/repository/ActiveMuteRepository.java +++ b/src/main/java/creator/loki/feature/moderation/repository/ActiveMuteRepository.java @@ -4,13 +4,13 @@ import java.util.List; import java.util.Optional; public interface ActiveMuteRepository { - void upsert(String guildId, String userId, long endsAtMs, long caseId); + void upsert(final String guildId, final String userId, final long endsAtMs, final long caseId); - void delete(String guildId, String userId); + void delete(final String guildId, final String userId); - Optional find(String guildId, String userId); + Optional find(final String guildId, final String userId); - List listTimedAfter(long nowMs); + List listTimedAfter(final long nowMs); record ActiveMuteEntry(String guildId, String userId, long endsAtMs, long caseId) {} } diff --git a/src/main/java/creator/loki/feature/moderation/repository/ModerationCaseRepository.java b/src/main/java/creator/loki/feature/moderation/repository/ModerationCaseRepository.java index bd272dd..8a95c37 100644 --- a/src/main/java/creator/loki/feature/moderation/repository/ModerationCaseRepository.java +++ b/src/main/java/creator/loki/feature/moderation/repository/ModerationCaseRepository.java @@ -3,16 +3,9 @@ package creator.loki.feature.moderation.repository; import java.util.Optional; public interface ModerationCaseRepository { - long insert( - String guildId, - String action, - String targetId, - String moderatorId, - String reason, - Long durationSec, - Long untilMs); + long insert(final String guildId, final String action, final String targetId, final String moderatorId, final String reason, final Long durationSec, final Long untilMs); - Optional findById(String guildId, long caseId); + Optional findById(final String guildId, final long caseId); record CaseEntry( long id, diff --git a/src/main/java/creator/loki/feature/moderation/repository/WarningRepository.java b/src/main/java/creator/loki/feature/moderation/repository/WarningRepository.java index f95c22f..e3babea 100644 --- a/src/main/java/creator/loki/feature/moderation/repository/WarningRepository.java +++ b/src/main/java/creator/loki/feature/moderation/repository/WarningRepository.java @@ -4,15 +4,15 @@ import java.util.List; import java.util.Optional; public interface WarningRepository { - long insert(String guildId, String userId, String moderatorId, String reason); + long insert(final String guildId, final String userId, final String moderatorId, final String reason); - List listByUser(String guildId, String userId, int limit); + List listByUser(final String guildId, final String userId, final int limit); - int countByUser(String guildId, String userId); + int countByUser(final String guildId, final String userId); - boolean deleteById(String guildId, long warningId); + boolean deleteById(final String guildId, final long warningId); - Optional findById(String guildId, long warningId); + Optional findById(final String guildId, final long warningId); record WarningEntry( long id, String guildId, String userId, String moderatorId, String reason, long createdAt) {} diff --git a/src/main/java/creator/loki/feature/moderation/repository/sql/SqlActiveMuteRepository.java b/src/main/java/creator/loki/feature/moderation/repository/sql/SqlActiveMuteRepository.java index 2f883fa..1c905b0 100644 --- a/src/main/java/creator/loki/feature/moderation/repository/sql/SqlActiveMuteRepository.java +++ b/src/main/java/creator/loki/feature/moderation/repository/sql/SqlActiveMuteRepository.java @@ -21,14 +21,14 @@ public class SqlActiveMuteRepository implements ActiveMuteRepository { } @Override - public void upsert(String guildId, String userId, long endsAtMs, long caseId) { + public void upsert(final String guildId, final String userId, final long endsAtMs, final long caseId) { String sql = """ INSERT INTO active_mutes (guild_id, user_id, ends_at_ms, case_id) VALUES (?, ?, ?, ?) ON CONFLICT(guild_id, user_id) DO UPDATE SET ends_at_ms = excluded.ends_at_ms, case_id = excluded.case_id """; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); stmt.setString(2, userId); stmt.setLong(3, endsAtMs); @@ -40,9 +40,9 @@ public class SqlActiveMuteRepository implements ActiveMuteRepository { } @Override - public void delete(String guildId, String userId) { + public void delete(final String guildId, final String userId) { String sql = "DELETE FROM active_mutes WHERE guild_id = ? AND user_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); stmt.setString(2, userId); stmt.executeUpdate(); @@ -52,13 +52,13 @@ public class SqlActiveMuteRepository implements ActiveMuteRepository { } @Override - public Optional find(String guildId, String userId) { + public Optional find(final String guildId, final String userId) { String sql = "SELECT guild_id, user_id, ends_at_ms, case_id FROM active_mutes WHERE guild_id = ? AND user_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); stmt.setString(2, userId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { if (rs.next()) { return Optional.of( new ActiveMuteEntry( @@ -75,16 +75,16 @@ public class SqlActiveMuteRepository implements ActiveMuteRepository { } @Override - public List listTimedAfter(long nowMs) { + public List listTimedAfter(final long nowMs) { String sql = """ SELECT guild_id, user_id, ends_at_ms, case_id FROM active_mutes WHERE ends_at_ms > ? AND ends_at_ms > 0 """; List list = new ArrayList<>(); - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setLong(1, nowMs); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { while (rs.next()) { list.add( new ActiveMuteEntry( diff --git a/src/main/java/creator/loki/feature/moderation/repository/sql/SqlModerationCaseRepository.java b/src/main/java/creator/loki/feature/moderation/repository/sql/SqlModerationCaseRepository.java index b5c2964..97f0321 100644 --- a/src/main/java/creator/loki/feature/moderation/repository/sql/SqlModerationCaseRepository.java +++ b/src/main/java/creator/loki/feature/moderation/repository/sql/SqlModerationCaseRepository.java @@ -21,14 +21,7 @@ public class SqlModerationCaseRepository implements ModerationCaseRepository { } @Override - public long insert( - String guildId, - String action, - String targetId, - String moderatorId, - String reason, - Long durationSec, - Long untilMs) { + public long insert(final String guildId, final String action, final String targetId, final String moderatorId, final String reason, Long durationSec, Long untilMs) { String sql = """ INSERT INTO moderation_cases (guild_id, action, target_id, moderator_id, @@ -36,7 +29,7 @@ public class SqlModerationCaseRepository implements ModerationCaseRepository { VALUES (?, ?, ?, ?, ?, ?, ?, ?) """; long now = System.currentTimeMillis(); - try (Connection conn = database.getConnection(); + try (final Connection conn = database.getConnection(); PreparedStatement stmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { stmt.setString(1, guildId); stmt.setString(2, action); @@ -55,7 +48,7 @@ public class SqlModerationCaseRepository implements ModerationCaseRepository { stmt.setLong(8, untilMs); } stmt.executeUpdate(); - try (ResultSet keys = stmt.getGeneratedKeys()) { + try (final ResultSet keys = stmt.getGeneratedKeys()) { if (keys.next()) { return keys.getLong(1); } @@ -67,16 +60,16 @@ public class SqlModerationCaseRepository implements ModerationCaseRepository { } @Override - public Optional findById(String guildId, long caseId) { + public Optional findById(final String guildId, final long caseId) { String sql = """ SELECT id, guild_id, action, target_id, moderator_id, reason, created_at, duration_sec, until_ms FROM moderation_cases WHERE id = ? AND guild_id = ? """; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setLong(1, caseId); stmt.setString(2, guildId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { if (rs.next()) { return Optional.of(map(rs)); } @@ -87,7 +80,7 @@ public class SqlModerationCaseRepository implements ModerationCaseRepository { return Optional.empty(); } - private static CaseEntry map(ResultSet rs) throws SQLException { + private static CaseEntry map(final ResultSet rs) throws SQLException { Long duration = rs.getObject("duration_sec") == null ? null : rs.getLong("duration_sec"); Long until = rs.getObject("until_ms") == null ? null : rs.getLong("until_ms"); return new CaseEntry( diff --git a/src/main/java/creator/loki/feature/moderation/repository/sql/SqlWarningRepository.java b/src/main/java/creator/loki/feature/moderation/repository/sql/SqlWarningRepository.java index 0758dc6..889b721 100644 --- a/src/main/java/creator/loki/feature/moderation/repository/sql/SqlWarningRepository.java +++ b/src/main/java/creator/loki/feature/moderation/repository/sql/SqlWarningRepository.java @@ -24,14 +24,14 @@ public class SqlWarningRepository implements WarningRepository { } @Override - public long insert(String guildId, String userId, String moderatorId, String reason) { + public long insert(final String guildId, final String userId, final String moderatorId, final String reason) { String sql = """ INSERT INTO warnings (guild_id, user_id, moderator_id, reason, created_at) VALUES (?, ?, ?, ?, ?) """; long now = System.currentTimeMillis(); - try (Connection conn = database.getConnection(); + try (final Connection conn = database.getConnection(); PreparedStatement stmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { stmt.setString(1, guildId); stmt.setString(2, userId); @@ -39,7 +39,7 @@ public class SqlWarningRepository implements WarningRepository { stmt.setString(4, reason); stmt.setLong(5, now); stmt.executeUpdate(); - try (ResultSet keys = stmt.getGeneratedKeys()) { + try (final ResultSet keys = stmt.getGeneratedKeys()) { if (keys.next()) { return keys.getLong(1); } @@ -51,7 +51,7 @@ public class SqlWarningRepository implements WarningRepository { } @Override - public List listByUser(String guildId, String userId, int limit) { + public List listByUser(final String guildId, final String userId, final int limit) { int lim = Math.min(Math.max(limit, 1), 25); String sql = """ @@ -62,11 +62,11 @@ public class SqlWarningRepository implements WarningRepository { LIMIT ? """; List list = new ArrayList<>(); - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); stmt.setString(2, userId); stmt.setInt(3, lim); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { while (rs.next()) { list.add(map(rs)); } @@ -78,12 +78,12 @@ public class SqlWarningRepository implements WarningRepository { } @Override - public int countByUser(String guildId, String userId) { + public int countByUser(final String guildId, final String userId) { String sql = "SELECT COUNT(*) FROM warnings WHERE guild_id = ? AND user_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); stmt.setString(2, userId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { if (rs.next()) { return rs.getInt(1); } @@ -95,9 +95,9 @@ public class SqlWarningRepository implements WarningRepository { } @Override - public boolean deleteById(String guildId, long warningId) { + public boolean deleteById(final String guildId, final long warningId) { String sql = "DELETE FROM warnings WHERE id = ? AND guild_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setLong(1, warningId); stmt.setString(2, guildId); return stmt.executeUpdate() > 0; @@ -108,16 +108,16 @@ public class SqlWarningRepository implements WarningRepository { } @Override - public Optional findById(String guildId, long warningId) { + public Optional findById(final String guildId, final long warningId) { String sql = """ SELECT id, guild_id, user_id, moderator_id, reason, created_at FROM warnings WHERE id = ? AND guild_id = ? """; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setLong(1, warningId); stmt.setString(2, guildId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { if (rs.next()) { return Optional.of(map(rs)); } @@ -128,7 +128,7 @@ public class SqlWarningRepository implements WarningRepository { return Optional.empty(); } - private static WarningEntry map(ResultSet rs) throws SQLException { + private static WarningEntry map(final ResultSet rs) throws SQLException { return new WarningEntry( rs.getLong("id"), rs.getString("guild_id"), diff --git a/src/main/java/creator/loki/feature/moderation/util/ModerationHelper.java b/src/main/java/creator/loki/feature/moderation/util/ModerationHelper.java index 5cc17a3..c62ce4f 100644 --- a/src/main/java/creator/loki/feature/moderation/util/ModerationHelper.java +++ b/src/main/java/creator/loki/feature/moderation/util/ModerationHelper.java @@ -6,11 +6,11 @@ import creator.loki.embed.EmbedTemplates; public final class ModerationHelper { private ModerationHelper() {} - public static String trunc(String s, int max) { + public static String trunc(final String s, final int max) { return s.length() <= max ? s : s.substring(0, max - 1) + "…"; } - public static void error(CommandContext ctx, String msg) { + public static void error(final CommandContext ctx, final String msg) { ctx.getChannel().sendMessageEmbeds(EmbedTemplates.error("Ошибка", msg)).queue(); } } diff --git a/src/main/java/creator/loki/feature/music/MusicCommandRegistrar.java b/src/main/java/creator/loki/feature/music/MusicCommandRegistrar.java index 15ef8f2..1990361 100644 --- a/src/main/java/creator/loki/feature/music/MusicCommandRegistrar.java +++ b/src/main/java/creator/loki/feature/music/MusicCommandRegistrar.java @@ -21,7 +21,7 @@ public class MusicCommandRegistrar implements CommandRegistrar { } @Override - public void register(CommandRegistry registry) { + public void register(final CommandRegistry registry) { registry.register(new PlayCommand(playerManager, searchManager)); registry.register(PlayerCommands.skip(playerManager)); registry.register(PlayerCommands.stop(playerManager)); diff --git a/src/main/java/creator/loki/feature/music/MusicSlashCommands.java b/src/main/java/creator/loki/feature/music/MusicSlashCommands.java index dad43b5..62dbcb2 100644 --- a/src/main/java/creator/loki/feature/music/MusicSlashCommands.java +++ b/src/main/java/creator/loki/feature/music/MusicSlashCommands.java @@ -22,14 +22,14 @@ public class MusicSlashCommands extends ListenerAdapter { private volatile boolean registered = false; @Inject - public MusicSlashCommands(PlayerManager playerManager) { + public MusicSlashCommands(final PlayerManager playerManager) { this.playHandler = new PlaySlashHandler(playerManager); this.queueHandler = new QueueSlashHandler(playerManager); this.filterHandler = new FilterSlashHandler(playerManager); } @Override - public void onGuildReady(@NotNull GuildReadyEvent event) { + public void onGuildReady(@NotNull final GuildReadyEvent event) { if (registered) return; registered = true; @@ -66,7 +66,7 @@ public class MusicSlashCommands extends ListenerAdapter { } @Override - public void onSlashCommandInteraction(@NotNull SlashCommandInteractionEvent event) { + public void onSlashCommandInteraction(@NotNull final SlashCommandInteractionEvent event) { String name = event.getName(); if (name.equals("play")) { playHandler.handle(event); diff --git a/src/main/java/creator/loki/feature/music/commands/FilterCommands.java b/src/main/java/creator/loki/feature/music/commands/FilterCommands.java index c0f1c4e..a7a1208 100644 --- a/src/main/java/creator/loki/feature/music/commands/FilterCommands.java +++ b/src/main/java/creator/loki/feature/music/commands/FilterCommands.java @@ -30,11 +30,11 @@ public class FilterCommands { return new BandCommand(pm, 2); } - private static GuildMusicManager mgr(PlayerManager pm, CommandContext ctx) { + private static GuildMusicManager mgr(PlayerManager pm, final CommandContext ctx) { return pm.getMusicManager(ctx.getGuild().getIdLong()); } - private static boolean checkChannel(GuildMusicManager m, CommandContext ctx) { + private static boolean checkChannel(GuildMusicManager m, final CommandContext ctx) { if (!m.getLink().isEmpty()) return true; ctx.getChannel() .sendMessageEmbeds(EmbedTemplates.error("Не в канале", "Бот не в голосовом канале.")) @@ -74,7 +74,7 @@ public class FilterCommands { } @Override - public void execute(CommandContext ctx) { + public void execute(final CommandContext ctx) { var m = mgr(pm, ctx); if (!checkChannel(m, ctx)) return; if (mode == 2) { @@ -159,7 +159,7 @@ public class FilterCommands { } @Override - public void execute(CommandContext ctx) { + public void execute(final CommandContext ctx) { var m = mgr(pm, ctx); if (!checkChannel(m, ctx)) return; boolean enabled = diff --git a/src/main/java/creator/loki/feature/music/commands/PlayerCommands.java b/src/main/java/creator/loki/feature/music/commands/PlayerCommands.java index b79ee02..15f69d1 100644 --- a/src/main/java/creator/loki/feature/music/commands/PlayerCommands.java +++ b/src/main/java/creator/loki/feature/music/commands/PlayerCommands.java @@ -51,7 +51,7 @@ public class PlayerCommands { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { var manager = getManager(context); if (manager.getScheduler().getCurrentTrack() == null) { context @@ -78,7 +78,7 @@ public class PlayerCommands { .queue(); } - private GuildMusicManager getManager(CommandContext context) { + private GuildMusicManager getManager(final CommandContext context) { return playerManager.getMusicManager(context.getGuild().getIdLong()); } } @@ -111,7 +111,7 @@ public class PlayerCommands { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { var guild = context.getGuild(); var manager = playerManager.getMusicManager(guild.getIdLong()); manager.stop(); @@ -152,7 +152,7 @@ public class PlayerCommands { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { var guild = context.getGuild(); var manager = playerManager.getMusicManager(guild.getIdLong()); manager.stop(); diff --git a/src/main/java/creator/loki/feature/music/commands/QueueCommands.java b/src/main/java/creator/loki/feature/music/commands/QueueCommands.java index 0e08eb6..08cf7d7 100644 --- a/src/main/java/creator/loki/feature/music/commands/QueueCommands.java +++ b/src/main/java/creator/loki/feature/music/commands/QueueCommands.java @@ -19,16 +19,16 @@ public class QueueCommands { private QueueCommands() {} - public static Command queue(PlayerManager pm) { + public static Command queue(final PlayerManager pm) { return new Mc(pm, "queue", "Показать очередь треков", null, null, QueueCommands::executeQueue); } - public static Command nowplaying(PlayerManager pm) { + public static Command nowplaying(final PlayerManager pm) { BiConsumer exec = QueueCommands::executeNowPlaying; return new Mc(pm, "nowplaying", "Показать текущий трек", "nowplaying", "Музыка", exec); } - public static Command volume(PlayerManager pm) { + public static Command volume(final PlayerManager pm) { BiConsumer exec = QueueCommands::executeVolume; return new Mc(pm, "volume", "Регулировка громкости (0-100)", "volume [0-100]", "Музыка", exec); } @@ -69,12 +69,12 @@ public class QueueCommands { return c != null ? c : "Общие"; } - public void execute(CommandContext ctx) { + public void execute(final CommandContext ctx) { e.accept(p, ctx); } } - private static void executeQueue(PlayerManager pm, CommandContext ctx) { + private static void executeQueue(final PlayerManager pm, final CommandContext ctx) { var m = pm.getMusicManager(ctx.getGuild().getIdLong()); var cur = m.getScheduler().getCurrentTrack(); var q = m.getScheduler().getQueue(); @@ -98,7 +98,7 @@ public class QueueCommands { ctx.getChannel().sendMessageEmbeds(embed.build()).queue(); } - private static void executeNowPlaying(PlayerManager pm, CommandContext ctx) { + private static void executeNowPlaying(final PlayerManager pm, final CommandContext ctx) { var lm = pm.getLavalinkManager(); var track = lm.getMusicManager(ctx.getGuild().getIdLong()).getScheduler().getCurrentTrack(); if (track == null) { @@ -126,7 +126,7 @@ public class QueueCommands { ctx.getChannel().sendMessageEmbeds(msg).queue(); } - private static void executeVolume(PlayerManager pm, CommandContext ctx) { + private static void executeVolume(final PlayerManager pm, final CommandContext ctx) { var l = pm.getLavalinkManager().getClient().getLinkIfCached(ctx.getGuild().getIdLong()); if (ctx.getArgs().isEmpty()) { var v = l != null && l.getCachedPlayer() != null ? l.getCachedPlayer().getVolume() : 100; diff --git a/src/main/java/creator/loki/feature/music/core/LavalinkManager.java b/src/main/java/creator/loki/feature/music/core/LavalinkManager.java index 8de47be..3dc8191 100644 --- a/src/main/java/creator/loki/feature/music/core/LavalinkManager.java +++ b/src/main/java/creator/loki/feature/music/core/LavalinkManager.java @@ -37,7 +37,7 @@ public class LavalinkManager { this(config, queueRepository, config.getMainToken()); } - public LavalinkManager(BotConfig config, QueueRepository queueRepository, String botToken) { + public LavalinkManager(BotConfig config, QueueRepository queueRepository, final String botToken) { this.config = config; this.queueRepository = queueRepository; LavalinkConfig lavalinkConfig = config.getLavalinkConfig(); @@ -113,12 +113,12 @@ public class LavalinkManager { return client; } - public Link getOrCreateLink(long guildId) { + public Link getOrCreateLink(final long guildId) { if (client == null) throw new IllegalStateException("Lavalink not configured"); return client.getOrCreateLink(guildId); } - public void setVoiceDisconnectHandler(LongConsumer handler) { + public void setVoiceDisconnectHandler(final LongConsumer handler) { this.voiceDisconnectHandler = handler; } @@ -126,16 +126,16 @@ public class LavalinkManager { return voiceDisconnectHandler; } - public GuildMusicManager getMusicManager(long guildId) { + public GuildMusicManager getMusicManager(final long guildId) { return musicManagers.computeIfAbsent( guildId, id -> new GuildMusicManager(id, this, queueRepository, voiceDisconnectHandler)); } - public GuildMusicManager getMusicManagerIfCached(long guildId) { + public GuildMusicManager getMusicManagerIfCached(final long guildId) { return musicManagers.get(guildId); } - public void removeMusicManager(long guildId) { + public void removeMusicManager(final long guildId) { musicManagers.remove(guildId); } diff --git a/src/main/java/creator/loki/feature/music/core/PlayerManager.java b/src/main/java/creator/loki/feature/music/core/PlayerManager.java index 5e04605..50f9bec 100644 --- a/src/main/java/creator/loki/feature/music/core/PlayerManager.java +++ b/src/main/java/creator/loki/feature/music/core/PlayerManager.java @@ -13,7 +13,7 @@ public class PlayerManager { this.lavalinkManager = lavalinkManager; } - public GuildMusicManager getMusicManager(long guildId) { + public GuildMusicManager getMusicManager(final long guildId) { return lavalinkManager.getMusicManager(guildId); } diff --git a/src/main/java/creator/loki/feature/music/core/SearchManager.java b/src/main/java/creator/loki/feature/music/core/SearchManager.java index 99c2372..f48e0bb 100644 --- a/src/main/java/creator/loki/feature/music/core/SearchManager.java +++ b/src/main/java/creator/loki/feature/music/core/SearchManager.java @@ -17,11 +17,11 @@ public class SearchManager { Caffeine.newBuilder().maximumSize(100).expireAfterWrite(2, TimeUnit.MINUTES).build(); } - public void store(long guildId, List results) { + public void store(final long guildId, List results) { cache.put(guildId, results); } - public Track pick(long guildId, int index) { + public Track pick(final long guildId, final int index) { List results = cache.getIfPresent(guildId); if (results == null || index < 0 || index >= results.size()) { return null; @@ -29,12 +29,12 @@ public class SearchManager { return results.get(index); } - public int resultCount(long guildId) { + public int resultCount(final long guildId) { List results = cache.getIfPresent(guildId); return results == null ? 0 : results.size(); } - public void clear(long guildId) { + public void clear(final long guildId) { cache.invalidate(guildId); } } diff --git a/src/main/java/creator/loki/feature/music/listener/MusicBotControlHandler.java b/src/main/java/creator/loki/feature/music/listener/MusicBotControlHandler.java index 154cb88..6441ff5 100644 --- a/src/main/java/creator/loki/feature/music/listener/MusicBotControlHandler.java +++ b/src/main/java/creator/loki/feature/music/listener/MusicBotControlHandler.java @@ -20,7 +20,7 @@ public class MusicBotControlHandler { this.lavalinkManager = lavalinkManager; } - public void handleSkip(MessageChannel ch, Guild guild, Member member) { + public void handleSkip(final MessageChannel ch, final Guild guild, final Member member) { if (reqVoice(ch, member) == null) return; var s = lavalinkManager.getMusicManager(guild.getIdLong()).getScheduler(); if (s.getCurrentTrack() == null) { @@ -32,14 +32,14 @@ public class MusicBotControlHandler { send(ch, ok("⏭ Пропущено", "**" + t + "**")); } - public void handleStop(MessageChannel ch, Guild guild, Member member) { + public void handleStop(final MessageChannel ch, final Guild guild, final Member member) { if (reqVoice(ch, member) == null) return; lavalinkManager.getMusicManager(guild.getIdLong()).stop(); guild.getJDA().getDirectAudioController().disconnect(guild); send(ch, ok(ERR, "⏹ Остановлено", "Музыка остановлена, очередь очищена.")); } - public void handleQueue(MessageChannel ch, Guild guild) { + public void handleQueue(final MessageChannel ch, final Guild guild) { var s = lavalinkManager.getMusicManager(guild.getIdLong()).getScheduler(); var cur = s.getCurrentTrack(); var q = s.getQueue(); @@ -62,7 +62,7 @@ public class MusicBotControlHandler { send(ch, ok("📜 Очередь", sb.toString())); } - public void handleNowPlaying(MessageChannel ch, Guild guild) { + public void handleNowPlaying(final MessageChannel ch, final Guild guild) { var t = lavalinkManager.getMusicManager(guild.getIdLong()).getScheduler().getCurrentTrack(); if (t == null) { send(ch, err("Сейчас ничего не играет.")); @@ -73,7 +73,7 @@ public class MusicBotControlHandler { ok("🎵 Сейчас играет", "**" + t.getInfo().getTitle() + "**\n" + t.getInfo().getAuthor())); } - public void handleVolume(MessageChannel ch, Guild guild, Member member, List args) { + public void handleVolume(final MessageChannel ch, final Guild guild, final Member member, final List args) { if (reqVoice(ch, member) == null) return; var link = lavalinkManager.getClient().getLinkIfCached(guild.getIdLong()); if (args.isEmpty()) { @@ -100,14 +100,14 @@ public class MusicBotControlHandler { } } - public void handleLeave(MessageChannel ch, Guild guild, Member member) { + public void handleLeave(final MessageChannel ch, final Guild guild, final Member member) { if (reqVoice(ch, member) == null) return; lavalinkManager.getMusicManager(guild.getIdLong()).stop(); guild.getJDA().getDirectAudioController().disconnect(guild); send(ch, ok(ERR, "👋 Отключился", "Вышел из голосового канала.")); } - public void handleRepeat(MessageChannel ch, Guild guild, Member member) { + public void handleRepeat(final MessageChannel ch, final Guild guild, final Member member) { if (reqVoice(ch, member) == null) return; var s = lavalinkManager.getMusicManager(guild.getIdLong()).getScheduler(); var now = !s.isRepeating(); @@ -119,7 +119,7 @@ public class MusicBotControlHandler { now ? "Очередь будет повторяться." : "Повтор отключён.")); } - public void handleShuffle(MessageChannel ch, Guild guild, Member member) { + public void handleShuffle(final MessageChannel ch, final Guild guild, final Member member) { if (reqVoice(ch, member) == null) return; var s = lavalinkManager.getMusicManager(guild.getIdLong()).getScheduler(); if (s.getQueue().isEmpty()) { @@ -130,7 +130,7 @@ public class MusicBotControlHandler { send(ch, ok("🔀 Перемешано", "Очередь перемешана.")); } - public void handleBassboost(MessageChannel ch, Guild guild, Member member, List args) { + public void handleBassboost(final MessageChannel ch, final Guild guild, final Member member, final List args) { if (reqVoice(ch, member) == null) return; var level = 10; if (!args.isEmpty()) @@ -142,7 +142,7 @@ public class MusicBotControlHandler { send(ch, ok("🔊 Bassboost", "**" + level + "**")); } - public void handleNightcore(MessageChannel ch, Guild guild, Member member) { + public void handleNightcore(final MessageChannel ch, final Guild guild, final Member member) { if (reqVoice(ch, member) == null) return; var s = lavalinkManager.getMusicManager(guild.getIdLong()).getScheduler(); var now = !s.filterState.isNightcore(); @@ -150,7 +150,7 @@ public class MusicBotControlHandler { send(ch, ok("🎵 Nightcore", now ? "Включён ⚡" : "Выключен")); } - public void handleVaporwave(MessageChannel ch, Guild guild, Member member) { + public void handleVaporwave(final MessageChannel ch, final Guild guild, final Member member) { if (reqVoice(ch, member) == null) return; var s = lavalinkManager.getMusicManager(guild.getIdLong()).getScheduler(); var now = !s.filterState.isVaporwave(); @@ -158,13 +158,13 @@ public class MusicBotControlHandler { send(ch, ok("🎵 Vaporwave", now ? "Включён 🌊" : "Выключен")); } - public void handleReset(MessageChannel ch, Guild guild, Member member) { + public void handleReset(final MessageChannel ch, final Guild guild, final Member member) { if (reqVoice(ch, member) == null) return; lavalinkManager.getMusicManager(guild.getIdLong()).getScheduler().resetFilters(); send(ch, ok("🔄 Сброс", "Фильтры сброшены.")); } - public void handleEqualizer(MessageChannel ch, Guild guild, Member member, List args) { + public void handleEqualizer(final MessageChannel ch, final Guild guild, final Member member, final List args) { if (reqVoice(ch, member) == null) return; if (args.size() < 2) { send(ch, err("Укажи band 0-14 и gain -0.25 до 1.0")); @@ -185,25 +185,25 @@ public class MusicBotControlHandler { } } - private Member reqVoice(MessageChannel ch, Member member) { + private Member reqVoice(final MessageChannel ch, final Member member) { if (member != null && member.getVoiceState().inAudioChannel()) return member; send(ch, err("Зайди в голосовой канал сначала.")); return null; } - private void send(MessageChannel ch, EmbedBuilder eb) { + private void send(final MessageChannel ch, final EmbedBuilder eb) { ch.sendMessageEmbeds(eb.build()).queue(); } - private static EmbedBuilder ok(String title, String desc) { + private static EmbedBuilder ok(final String title, final String desc) { return new EmbedBuilder().setColor(0x00AAFF).setTitle(title).setDescription(desc); } - private static EmbedBuilder ok(int color, String title, String desc) { + private static EmbedBuilder ok(final int color, final String title, final String desc) { return new EmbedBuilder().setColor(color).setTitle(title).setDescription(desc); } - private static EmbedBuilder err(String msg) { + private static EmbedBuilder err(final String msg) { return new EmbedBuilder().setColor(ERR).setDescription("❌ " + msg); } } diff --git a/src/main/java/creator/loki/feature/music/listener/MusicBotListener.java b/src/main/java/creator/loki/feature/music/listener/MusicBotListener.java index d78cdee..eefe1e6 100644 --- a/src/main/java/creator/loki/feature/music/listener/MusicBotListener.java +++ b/src/main/java/creator/loki/feature/music/listener/MusicBotListener.java @@ -18,16 +18,13 @@ public class MusicBotListener extends ListenerAdapter { private final MusicBotPlayHandler playHandler; private final MusicBotControlHandler controlHandler; - public MusicBotListener( - LavalinkManager lavalinkManager, - QueueRepository queueRepository, - creator.loki.feature.music.core.PlayerManager playerManager) { + public MusicBotListener(final LavalinkManager lavalinkManager, final QueueRepository queueRepository, final creator.loki.feature.music.core.PlayerManager playerManager) { this.playHandler = new MusicBotPlayHandler(lavalinkManager); this.controlHandler = new MusicBotControlHandler(lavalinkManager); } @Override - public void onMessageReceived(@NotNull MessageReceivedEvent event) { + public void onMessageReceived(@NotNull final MessageReceivedEvent event) { if (event.getAuthor().isBot()) return; String content = event.getMessage().getContentRaw(); if (!content.startsWith(PREFIX)) return; @@ -65,7 +62,7 @@ public class MusicBotListener extends ListenerAdapter { } } - private void help(MessageChannel ch) { + private void help(final MessageChannel ch) { ch.sendMessageEmbeds( new EmbedBuilder() .setColor(0x00AAFF) diff --git a/src/main/java/creator/loki/feature/music/listener/MusicBotPlayHandler.java b/src/main/java/creator/loki/feature/music/listener/MusicBotPlayHandler.java index 403bec3..151670d 100644 --- a/src/main/java/creator/loki/feature/music/listener/MusicBotPlayHandler.java +++ b/src/main/java/creator/loki/feature/music/listener/MusicBotPlayHandler.java @@ -22,7 +22,7 @@ public class MusicBotPlayHandler { this.trackLoader = new TrackLoader(lavalinkManager); } - public void handlePlay(MessageChannel ch, Guild guild, Member member, List args) { + public void handlePlay(final MessageChannel ch, final Guild guild, Member member, final List args) { if (reqVoice(ch, member) == null) return; if (args.isEmpty()) { send(ch, err("Укажи URL или запрос: `m!play <название>`")); @@ -38,19 +38,19 @@ public class MusicBotPlayHandler { id, new TrackLoader.LoadCallbacks() { @Override - public void onTrackLoaded(Track track) { + public void onTrackLoaded(final Track track) { m.getScheduler().enqueue(track); send(ch, trackAdded(track)); } @Override - public void onPlaylistLoaded(PlaylistLoaded r) { + public void onPlaylistLoaded(final PlaylistLoaded r) { for (Track t : r.getTracks()) m.getScheduler().enqueue(t); send(ch, playlistAdded(r)); } @Override - public void onSearchResults(List tracks) { + public void onSearchResults(final List tracks) { if (tracks.isEmpty()) { onNoMatches(); return; @@ -66,7 +66,7 @@ public class MusicBotPlayHandler { } @Override - public void onLoadFailed(dev.arbjerg.lavalink.client.player.LoadFailed e) { + public void onLoadFailed(final dev.arbjerg.lavalink.client.player.LoadFailed e) { send( ch, err( @@ -78,7 +78,7 @@ public class MusicBotPlayHandler { }); } - private Member reqVoice(MessageChannel ch, Member member) { + private Member reqVoice(final MessageChannel ch, Member member) { if (member == null || !member.getVoiceState().inAudioChannel()) { send(ch, err("Зайди в голосовой канал сначала.")); return null; @@ -86,18 +86,18 @@ public class MusicBotPlayHandler { return member; } - private GuildMusicManager mgr(Guild g) { + private GuildMusicManager mgr(final Guild g) { return lavalinkManager.getMusicManager(g.getIdLong()); } - private static String resolveIdentifier(String query) { + private static String resolveIdentifier(final String query) { if (query.startsWith("http://") || query.startsWith("https://")) { return query; } return "ytsearch:" + query; } - private void connect(Guild g, Member m, LavalinkManager lm) { + private void connect(final Guild g, final Member m, final LavalinkManager lm) { if (g.getMember(g.getJDA().getSelfUser()).getVoiceState().inAudioChannel()) return; var vc = m.getVoiceState().getChannel().asVoiceChannel(); g.getJDA().getDirectAudioController().connect(vc); @@ -126,18 +126,18 @@ public class MusicBotPlayHandler { } } - private void send(MessageChannel ch, EmbedBuilder eb) { + private void send(final MessageChannel ch, final EmbedBuilder eb) { ch.sendMessageEmbeds(eb.build()).queue(); } - private EmbedBuilder trackAdded(Track t) { + private EmbedBuilder trackAdded(final Track t) { var i = t.getInfo(); return ok("✅ Добавлено в очередь", "**[" + i.getTitle() + "](" + i.getUri() + ")**") .addField("Исполнитель", i.getAuthor(), true) .addField("Длительность", fmt(i.getLength()), true); } - private EmbedBuilder playlistAdded(PlaylistLoaded pl) { + private EmbedBuilder playlistAdded(final PlaylistLoaded pl) { long total = pl.getTracks().stream().mapToLong(t -> t.getInfo().getLength()).sum(); return new EmbedBuilder() .setColor(0x00FF00) @@ -147,15 +147,15 @@ public class MusicBotPlayHandler { .addField("Длительность", fmt(total), true); } - private static EmbedBuilder ok(String title, String desc) { + private static EmbedBuilder ok(final String title, final String desc) { return new EmbedBuilder().setColor(0x00AAFF).setTitle(title).setDescription(desc); } - private static EmbedBuilder err(String msg) { + private static EmbedBuilder err(final String msg) { return new EmbedBuilder().setColor(0xFF4444).setDescription("❌ " + msg); } - static String fmt(long ms) { + static String fmt(final long ms) { long s = ms / 1000; if (s >= 3600) return String.format("%d:%02d:%02d", s / 3600, (s % 3600) / 60, s % 60); return String.format("%d:%02d", s / 60, s % 60); diff --git a/src/main/java/creator/loki/feature/music/listener/PlaySelectHandler.java b/src/main/java/creator/loki/feature/music/listener/PlaySelectHandler.java index 7dc3562..a9e7ce7 100644 --- a/src/main/java/creator/loki/feature/music/listener/PlaySelectHandler.java +++ b/src/main/java/creator/loki/feature/music/listener/PlaySelectHandler.java @@ -26,7 +26,7 @@ public class PlaySelectHandler extends ListenerAdapter { } @Override - public void onStringSelectInteraction(@NotNull StringSelectInteractionEvent event) { + public void onStringSelectInteraction(@NotNull final StringSelectInteractionEvent event) { if (!event.getComponentId().equals("play_select")) return; var guild = event.getGuild(); diff --git a/src/main/java/creator/loki/feature/music/manage/FilterState.java b/src/main/java/creator/loki/feature/music/manage/FilterState.java index 66d9476..6042b61 100644 --- a/src/main/java/creator/loki/feature/music/manage/FilterState.java +++ b/src/main/java/creator/loki/feature/music/manage/FilterState.java @@ -34,24 +34,24 @@ public class FilterState { return vaporwave; } - public FilterState setBassboost(int level) { + public FilterState setBassboost(final int level) { this.bassboost = Math.max(0f, Math.min(1.0f, level / 100.0f)); return this; } - public FilterState setNightcore(boolean enabled) { + public FilterState setNightcore(final boolean enabled) { this.nightcore = enabled; if (enabled) this.vaporwave = false; return this; } - public FilterState setVaporwave(boolean enabled) { + public FilterState setVaporwave(final boolean enabled) { this.vaporwave = enabled; if (enabled) this.nightcore = false; return this; } - public FilterState setEqualizerBand(int band, float gain) { + public FilterState setEqualizerBand(final int band, final float gain) { if (band < 0 || band > 14) return this; customBands.removeIf(b -> b.getBand() == band); customBands.add(new Band(band, Math.max(-0.25f, Math.min(10.0f, gain)))); @@ -66,7 +66,7 @@ public class FilterState { return this; } - public FilterState apply(Optional link) { + public FilterState apply(final Optional link) { link.ifPresent( l -> { FilterBuilder fb = new FilterBuilder(); diff --git a/src/main/java/creator/loki/feature/music/manage/GuildMusicManager.java b/src/main/java/creator/loki/feature/music/manage/GuildMusicManager.java index ebc4d57..1ce6295 100644 --- a/src/main/java/creator/loki/feature/music/manage/GuildMusicManager.java +++ b/src/main/java/creator/loki/feature/music/manage/GuildMusicManager.java @@ -120,7 +120,7 @@ public class GuildMusicManager { executor.execute(() -> restoreTracks(saved, client.getNodes().get(0))); } - private void restoreTracks(List saved, LavalinkNode node) { + private void restoreTracks(final List saved, final LavalinkNode node) { var decoded = new ArrayList(); for (var qt : saved) { try { @@ -158,7 +158,7 @@ public class GuildMusicManager { queueRepository.saveQueue(String.valueOf(guildId), queueTracks); } - private static QueueTrack toQueueTrack(Track t) { + private static QueueTrack toQueueTrack(final Track t) { var i = t.getInfo(); return new QueueTrack(t.getEncoded(), i.getTitle(), i.getAuthor(), i.getUri(), i.getLength()); } diff --git a/src/main/java/creator/loki/feature/music/manage/TrackScheduler.java b/src/main/java/creator/loki/feature/music/manage/TrackScheduler.java index 0a8a592..e539e8f 100644 --- a/src/main/java/creator/loki/feature/music/manage/TrackScheduler.java +++ b/src/main/java/creator/loki/feature/music/manage/TrackScheduler.java @@ -28,7 +28,7 @@ public class TrackScheduler { this.trackStarter = new TrackStarter(manager.getExecutor()); } - public void enqueue(Track track) { + public void enqueue(final Track track) { manager.cancelAutoLeaveTimer(); if (manager.getPlayer().filter(p -> p.getTrack() != null).isPresent()) { queue.offer(track); @@ -77,23 +77,23 @@ public class TrackScheduler { return repeating; } - public void setRepeating(boolean r) { + public void setRepeating(final boolean r) { this.repeating = r; } - public void setBassboost(int l) { + public void setBassboost(final int l) { filterState.setBassboost(l).apply(manager.getLink()); } - public void setNightcore(boolean e) { + public void setNightcore(final boolean e) { filterState.setNightcore(e).apply(manager.getLink()); } - public void setVaporwave(boolean e) { + public void setVaporwave(final boolean e) { filterState.setVaporwave(e).apply(manager.getLink()); } - public void setEqualizerBand(int b, float g) { + public void setEqualizerBand(final int b, final float g) { filterState.setEqualizerBand(b, g).apply(manager.getLink()); } @@ -101,7 +101,7 @@ public class TrackScheduler { filterState.reset().apply(manager.getLink()); } - public void onTrackEnd(Track lastTrack, AudioTrackEndReason endReason) { + public void onTrackEnd(final Track lastTrack, AudioTrackEndReason endReason) { if (endReason == AudioTrackEndReason.LOAD_FAILED) { handleLoadFailed(); } else if (!endReason.getMayStartNext() && endReason != AudioTrackEndReason.FINISHED) { @@ -113,7 +113,7 @@ public class TrackScheduler { } } - void startTrack(Track track) { + void startTrack(final Track track) { manager.cancelAutoLeaveTimer(); var link = manager.getLavalinkManager().getOrCreateLink(manager.getGuildId()); trackStarter.startWithRetry(link, track); @@ -124,12 +124,12 @@ public class TrackScheduler { nextOrAutoLeave(); } - private void handleUnexpectedEnd(AudioTrackEndReason endReason) { + private void handleUnexpectedEnd(final AudioTrackEndReason endReason) { LoggerDecorator.warn(log, "Track ended unexpectedly: " + endReason); manager.startAutoLeaveTimer(); } - private void handleFinished(Track lastTrack) { + private void handleFinished(final Track lastTrack) { startTrack(lastTrack.makeClone()); } diff --git a/src/main/java/creator/loki/feature/music/manage/TrackStarter.java b/src/main/java/creator/loki/feature/music/manage/TrackStarter.java index 7101324..ba8baea 100644 --- a/src/main/java/creator/loki/feature/music/manage/TrackStarter.java +++ b/src/main/java/creator/loki/feature/music/manage/TrackStarter.java @@ -26,11 +26,11 @@ class TrackStarter { * @param link the Lavalink link to play the track on * @param track the track to start */ - void startWithRetry(Link link, Track track) { + void startWithRetry(final Link link, final Track track) { startWithRetry(link, track, 0); } - private void startWithRetry(Link link, Track track, int attempt) { + private void startWithRetry(final Link link, final Track track, final int attempt) { if (attempt > MAX_ATTEMPTS) return; link.createOrUpdatePlayer() .setTrack(track) diff --git a/src/main/java/creator/loki/feature/music/play/PlayCommand.java b/src/main/java/creator/loki/feature/music/play/PlayCommand.java index 91d94d9..4cfce7d 100644 --- a/src/main/java/creator/loki/feature/music/play/PlayCommand.java +++ b/src/main/java/creator/loki/feature/music/play/PlayCommand.java @@ -21,7 +21,7 @@ public class PlayCommand implements Command { private final PlayerManager playerManager; private final SearchHandler searchHandler; - public PlayCommand(PlayerManager playerManager, SearchManager searchManager) { + public PlayCommand(PlayerManager playerManager, final SearchManager searchManager) { this.playerManager = playerManager; this.searchHandler = new SearchHandler(searchManager); } @@ -47,7 +47,7 @@ public class PlayCommand implements Command { } @Override - public void execute(CommandContext ctx) { + public void execute(final CommandContext ctx) { Guild guild = ctx.getGuild(); if (guild == null) return; Member member = ctx.getAuthor(); @@ -71,7 +71,7 @@ public class PlayCommand implements Command { handlePlayQuery(ctx, args, first, lm, mm); } - private boolean resolveVoiceConnection(CommandContext ctx) { + private boolean resolveVoiceConnection(final CommandContext ctx) { var guild = ctx.getGuild(); var member = ctx.getAuthor(); var lm = playerManager.getLavalinkManager(); @@ -82,7 +82,7 @@ public class PlayCommand implements Command { return true; } - private void handlePickResult(CommandContext ctx, String first) { + private void handlePickResult(final CommandContext ctx, final String first) { var guild = ctx.getGuild(); Track t = searchHandler.pickResult(guild.getIdLong(), Integer.parseInt(first) - 1); if (t == null) { @@ -93,12 +93,7 @@ public class PlayCommand implements Command { enqueueAndNotify(ctx, t); } - private void handlePlayQuery( - CommandContext ctx, - List args, - String first, - LavalinkManager lm, - GuildMusicManager mm) { + private void handlePlayQuery(final CommandContext ctx, final List args, final String first, final LavalinkManager lm, final GuildMusicManager mm) { boolean isSource = SOURCES.contains(first); String raw = String.join(" ", isSource ? args.subList(1, args.size()) : args); if (raw.isEmpty()) { @@ -111,21 +106,13 @@ public class PlayCommand implements Command { loadAndHandle(ctx, lm, ctx.getGuild().getIdLong(), mm, id, isUrl, query, raw); } - private void loadAndHandle( - CommandContext ctx, - LavalinkManager lm, - long guildId, - GuildMusicManager mm, - String id, - boolean isUrl, - String query, - String raw) { + private void loadAndHandle(final CommandContext ctx, final LavalinkManager lm, final long guildId, final GuildMusicManager mm, final String id, final boolean isUrl, final String query, final String raw) { lm.getOrCreateLink(guildId) .loadItem(id) .subscribe(new PlayLoadHandler(ctx, searchHandler, mm, isUrl, query, raw)); } - private static String buildQuery(String first, String raw) { + private static String buildQuery(final String first, final String raw) { if (raw.startsWith("http://") || raw.startsWith("https://")) return raw; if (raw.startsWith("ytsearch:") || raw.startsWith("ytmsearch:") @@ -134,7 +121,7 @@ public class PlayCommand implements Command { return "ytsearch:" + raw; } - private void enqueueAndNotify(CommandContext ctx, Track track) { + private void enqueueAndNotify(final CommandContext ctx, final Track track) { var m = playerManager.getLavalinkManager().getMusicManager(ctx.getGuild().getIdLong()); m.getScheduler().enqueue(track); ctx.getChannel() @@ -148,7 +135,7 @@ public class PlayCommand implements Command { .queue(); } - private static void sendErr(CommandContext ctx, String msg) { + private static void sendErr(final CommandContext ctx, final String msg) { ctx.getChannel().sendMessageEmbeds(EmbedTemplates.error("Ошибка", msg)).queue(); } } diff --git a/src/main/java/creator/loki/feature/music/play/PlayLoadHandler.java b/src/main/java/creator/loki/feature/music/play/PlayLoadHandler.java index a12f500..ee56116 100644 --- a/src/main/java/creator/loki/feature/music/play/PlayLoadHandler.java +++ b/src/main/java/creator/loki/feature/music/play/PlayLoadHandler.java @@ -38,13 +38,13 @@ class PlayLoadHandler extends AbstractAudioLoadResultHandler { } @Override - public void ontrackLoaded(TrackLoaded r) { + public void ontrackLoaded(final TrackLoaded r) { if (isUrl) enqueueAndNotify(r.getTrack()); else showResults(List.of(r.getTrack())); } @Override - public void onPlaylistLoaded(PlaylistLoaded r) { + public void onPlaylistLoaded(final PlaylistLoaded r) { if (isUrl) { int count = 0; for (Track t : r.getTracks()) { @@ -64,7 +64,7 @@ class PlayLoadHandler extends AbstractAudioLoadResultHandler { } @Override - public void onSearchResultLoaded(SearchResult r) { + public void onSearchResultLoaded(final SearchResult r) { String noMatch = isUrl ? "Ничего не найдено по ссылке." : "Ничего не найдено по запросу: " + raw; if (r.getTracks().isEmpty()) { @@ -84,14 +84,14 @@ class PlayLoadHandler extends AbstractAudioLoadResultHandler { } @Override - public void loadFailed(LoadFailed e) { + public void loadFailed(final LoadFailed e) { sendErr( e.getException().getMessage() != null ? e.getException().getMessage() : "Неизвестная ошибка"); } - private void enqueueAndNotify(Track track) { + private void enqueueAndNotify(final Track track) { mm.getScheduler().enqueue(track); ctx.getChannel() .sendMessageEmbeds( @@ -104,7 +104,7 @@ class PlayLoadHandler extends AbstractAudioLoadResultHandler { .queue(); } - private void showResults(List list) { + private void showResults(final List list) { if (query == null) return; searchHandler.storeResults(ctx.getGuild().getIdLong(), list); int show = Math.min(25, list.size()); @@ -123,11 +123,11 @@ class PlayLoadHandler extends AbstractAudioLoadResultHandler { .queue(); } - private void sendErr(String msg) { + private void sendErr(final String msg) { ctx.getChannel().sendMessageEmbeds(EmbedTemplates.error("Ошибка", msg)).queue(); } - private static String truncate(String s, int max) { + private static String truncate(String s, final int max) { if (s == null) return ""; if (s.length() <= max) return s; return s.substring(0, max - 1) + "…"; diff --git a/src/main/java/creator/loki/feature/music/play/SearchHandler.java b/src/main/java/creator/loki/feature/music/play/SearchHandler.java index fe2603a..35b9e4f 100644 --- a/src/main/java/creator/loki/feature/music/play/SearchHandler.java +++ b/src/main/java/creator/loki/feature/music/play/SearchHandler.java @@ -15,11 +15,11 @@ public class SearchHandler { this.searchManager = searchManager; } - public void storeResults(long guildId, List tracks) { + public void storeResults(final long guildId, final List tracks) { searchManager.store(guildId, tracks); } - public Track pickResult(long guildId, int choice) { + public Track pickResult(final long guildId, final int choice) { Track track = searchManager.pick(guildId, choice); if (track != null) { searchManager.clear(guildId); @@ -27,11 +27,11 @@ public class SearchHandler { return track; } - public void clearResults(long guildId) { + public void clearResults(final long guildId) { searchManager.clear(guildId); } - public EmbedBuilder buildResultsEmbed(String query, List tracks) { + public EmbedBuilder buildResultsEmbed(final String query, final List tracks) { int show = Math.min(SHOW_RESULTS, tracks.size()); StringBuilder sb = new StringBuilder(); for (int i = 0; i < show; i++) { @@ -51,7 +51,7 @@ public class SearchHandler { .setFooter("Результаты доступны 2 минуты"); } - public static boolean isNumeric(String s) { + public static boolean isNumeric(final String s) { if (s.isEmpty()) return false; for (int i = 0; i < s.length(); i++) { if (!Character.isDigit(s.charAt(i))) return false; @@ -59,11 +59,11 @@ public class SearchHandler { return true; } - private static String escape(String s) { + private static String escape(final String s) { return s.replace("*", "\\*").replace("_", "\\_").replace("~", "\\~"); } - public static String formatDuration(long millis) { + public static String formatDuration(final long millis) { long totalSec = millis / 1000; long hours = totalSec / 3600; long minutes = (totalSec % 3600) / 60; diff --git a/src/main/java/creator/loki/feature/music/play/TrackLoader.java b/src/main/java/creator/loki/feature/music/play/TrackLoader.java index 65d6fa3..e2a12ab 100644 --- a/src/main/java/creator/loki/feature/music/play/TrackLoader.java +++ b/src/main/java/creator/loki/feature/music/play/TrackLoader.java @@ -19,23 +19,23 @@ public class TrackLoader { this.lavalinkManager = lavalinkManager; } - public void loadItem(long guildId, String identifier, LoadCallbacks callbacks) { + public void loadItem(final long guildId, final String identifier, final LoadCallbacks callbacks) { Link link = lavalinkManager.getOrCreateLink(guildId); link.loadItem(identifier) .subscribe( new AbstractAudioLoadResultHandler() { @Override - public void ontrackLoaded(TrackLoaded result) { + public void ontrackLoaded(final TrackLoaded result) { callbacks.onTrackLoaded(result.getTrack()); } @Override - public void onPlaylistLoaded(PlaylistLoaded result) { + public void onPlaylistLoaded(final PlaylistLoaded result) { callbacks.onPlaylistLoaded(result); } @Override - public void onSearchResultLoaded(SearchResult result) { + public void onSearchResultLoaded(final SearchResult result) { callbacks.onSearchResults(result.getTracks()); } @@ -45,29 +45,24 @@ public class TrackLoader { } @Override - public void loadFailed(LoadFailed e) { + public void loadFailed(final LoadFailed e) { callbacks.onLoadFailed(e); } }); } - public void loadAndPlayUrl( - GuildMusicManager manager, - String url, - Runnable onPlaylistAdded, - Runnable onNoMatch, - Runnable onError) { + public void loadAndPlayUrl(final GuildMusicManager manager, final String url, final Runnable onPlaylistAdded, final Runnable onNoMatch, final Runnable onError) { loadItem( manager.getGuildId(), url, new LoadCallbacks() { @Override - public void onTrackLoaded(Track track) { + public void onTrackLoaded(final Track track) { manager.getScheduler().enqueue(track); } @Override - public void onPlaylistLoaded(PlaylistLoaded result) { + public void onPlaylistLoaded(final PlaylistLoaded result) { for (Track t : result.getTracks()) { manager.getScheduler().enqueue(t); } @@ -75,7 +70,7 @@ public class TrackLoader { } @Override - public void onSearchResults(List tracks) { + public void onSearchResults(final List tracks) { if (tracks.isEmpty()) { onNoMatch.run(); return; @@ -89,7 +84,7 @@ public class TrackLoader { } @Override - public void onLoadFailed(LoadFailed e) { + public void onLoadFailed(final LoadFailed e) { onError.run(); } }); diff --git a/src/main/java/creator/loki/feature/music/repository/FilterRepository.java b/src/main/java/creator/loki/feature/music/repository/FilterRepository.java index 85e9124..7de0ea7 100644 --- a/src/main/java/creator/loki/feature/music/repository/FilterRepository.java +++ b/src/main/java/creator/loki/feature/music/repository/FilterRepository.java @@ -27,7 +27,7 @@ public class FilterRepository { String sql = "INSERT OR REPLACE INTO music_filters (guild_id, bassboost, nightcore, vaporwave) " + "VALUES (?, ?, ?, ?)"; - try (PreparedStatement stmt = db.prepare(sql)) { + try (final PreparedStatement stmt = db.prepare(sql)) { stmt.setString(1, guildId); stmt.setInt(2, bassboost); stmt.setInt(3, nightcore ? 1 : 0); @@ -40,9 +40,9 @@ public class FilterRepository { public FilterState load(final String guildId) { String sql = "SELECT bassboost, nightcore, vaporwave FROM music_filters WHERE guild_id = ?"; - try (PreparedStatement stmt = db.prepare(sql)) { + try (final PreparedStatement stmt = db.prepare(sql)) { stmt.setString(1, guildId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { if (rs.next()) { return new FilterState(rs.getInt("bassboost"), rs.getInt("nightcore") == 1, rs.getInt("vaporwave") == 1); } } } catch (SQLException e) { @@ -53,7 +53,7 @@ public class FilterRepository { public void delete(final String guildId) { String sql = "DELETE FROM music_filters WHERE guild_id = ?"; - try (PreparedStatement stmt = db.prepare(sql)) { + try (final PreparedStatement stmt = db.prepare(sql)) { stmt.setString(1, guildId); stmt.executeUpdate(); } catch (SQLException e) { diff --git a/src/main/java/creator/loki/feature/music/repository/QueueRepository.java b/src/main/java/creator/loki/feature/music/repository/QueueRepository.java index 093bd0b..68b09e6 100644 --- a/src/main/java/creator/loki/feature/music/repository/QueueRepository.java +++ b/src/main/java/creator/loki/feature/music/repository/QueueRepository.java @@ -23,14 +23,14 @@ public class QueueRepository { this.db = db; } - public void saveQueue(String guildId, List tracks) { + public void saveQueue(final String guildId, List tracks) { deleteQueue(guildId); if (tracks.isEmpty()) return; String sql = "INSERT INTO music_queue (guild_id, position, track_encoded, track_title, " + "track_author, track_uri, track_duration) VALUES (?, ?, ?, ?, ?, ?, ?)"; - try (PreparedStatement stmt = db.prepare(sql)) { + try (final PreparedStatement stmt = db.prepare(sql)) { for (int i = 0; i < tracks.size(); i++) { QueueTrack t = tracks.get(i); stmt.setString(1, guildId); @@ -48,14 +48,14 @@ public class QueueRepository { } } - public List loadQueue(String guildId) { + public List loadQueue(final String guildId) { String sql = "SELECT track_encoded, track_title, track_author, track_uri, track_duration " + "FROM music_queue WHERE guild_id = ? ORDER BY position"; List tracks = new ArrayList<>(); - try (PreparedStatement stmt = db.prepare(sql)) { + try (final PreparedStatement stmt = db.prepare(sql)) { stmt.setString(1, guildId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { while (rs.next()) { tracks.add( new QueueTrack( @@ -72,9 +72,9 @@ public class QueueRepository { return tracks; } - public void deleteQueue(String guildId) { + public void deleteQueue(final String guildId) { String sql = "DELETE FROM music_queue WHERE guild_id = ?"; - try (PreparedStatement stmt = db.prepare(sql)) { + try (final PreparedStatement stmt = db.prepare(sql)) { stmt.setString(1, guildId); stmt.executeUpdate(); } catch (SQLException e) { diff --git a/src/main/java/creator/loki/feature/music/slash/FilterSlashHandler.java b/src/main/java/creator/loki/feature/music/slash/FilterSlashHandler.java index a7fe36c..8187499 100644 --- a/src/main/java/creator/loki/feature/music/slash/FilterSlashHandler.java +++ b/src/main/java/creator/loki/feature/music/slash/FilterSlashHandler.java @@ -13,7 +13,7 @@ public class FilterSlashHandler { this.playerManager = playerManager; } - public void handleBassboost(SlashCommandInteractionEvent event) { + public void handleBassboost(final SlashCommandInteractionEvent event) { if (reqVoice(event) == null) return; var manager = getManager(event); Integer level = event.getOption("level") != null ? event.getOption("level").getAsInt() : null; @@ -25,7 +25,7 @@ public class FilterSlashHandler { .queue(); } - public void handleNightcore(SlashCommandInteractionEvent event) { + public void handleNightcore(final SlashCommandInteractionEvent event) { if (reqVoice(event) == null) return; var manager = getManager(event); boolean now = !manager.getScheduler().filterState.isNightcore(); @@ -36,7 +36,7 @@ public class FilterSlashHandler { .queue(); } - public void handleVaporwave(SlashCommandInteractionEvent event) { + public void handleVaporwave(final SlashCommandInteractionEvent event) { if (reqVoice(event) == null) return; var manager = getManager(event); boolean now = !manager.getScheduler().filterState.isVaporwave(); @@ -47,7 +47,7 @@ public class FilterSlashHandler { .queue(); } - public void handleEqualizer(SlashCommandInteractionEvent event) { + public void handleEqualizer(final SlashCommandInteractionEvent event) { if (reqVoice(event) == null) return; var manager = getManager(event); Integer band = event.getOption("band") != null ? event.getOption("band").getAsInt() : null; @@ -72,14 +72,14 @@ public class FilterSlashHandler { .queue(); } - public void handleReset(SlashCommandInteractionEvent event) { + public void handleReset(final SlashCommandInteractionEvent event) { if (reqVoice(event) == null) return; var manager = getManager(event); manager.getScheduler().resetFilters(); event.replyEmbeds(EmbedTemplates.info("Сброшено", "Все фильтры сброшены.")).queue(); } - private Member reqVoice(SlashCommandInteractionEvent event) { + private Member reqVoice(final SlashCommandInteractionEvent event) { Member member = event.getMember(); if (member == null || !member.getVoiceState().inAudioChannel()) { event @@ -91,7 +91,7 @@ public class FilterSlashHandler { return member; } - private GuildMusicManager getManager(SlashCommandInteractionEvent event) { + private GuildMusicManager getManager(final SlashCommandInteractionEvent event) { return playerManager.getMusicManager(event.getGuild().getIdLong()); } } diff --git a/src/main/java/creator/loki/feature/music/slash/PlaySlashHandler.java b/src/main/java/creator/loki/feature/music/slash/PlaySlashHandler.java index 818ec99..725461d 100644 --- a/src/main/java/creator/loki/feature/music/slash/PlaySlashHandler.java +++ b/src/main/java/creator/loki/feature/music/slash/PlaySlashHandler.java @@ -22,7 +22,7 @@ public class PlaySlashHandler { this.trackLoader = new TrackLoader(playerManager.getLavalinkManager()); } - public void handle(SlashCommandInteractionEvent event) { + public void handle(final SlashCommandInteractionEvent event) { Member member = requireVoiceChannel(event); if (member == null) return; String query = event.getOption("query").getAsString(); @@ -42,26 +42,23 @@ public class PlaySlashHandler { } } - private void loadUrl( - SlashCommandInteractionEvent event, String url, GuildMusicManager m, Guild guild) { + private void loadUrl(final SlashCommandInteractionEvent event, final String url, final GuildMusicManager m, final Guild guild) { trackLoader.loadItem(m.getGuildId(), url, loader(event, m, guild, null)); } - private void search( - SlashCommandInteractionEvent event, String query, GuildMusicManager m, Guild guild) { + private void search(final SlashCommandInteractionEvent event, final String query, final GuildMusicManager m, final Guild guild) { trackLoader.loadItem(m.getGuildId(), "ytsearch:" + query, loader(event, m, guild, query)); } - private TrackLoader.LoadCallbacks loader( - SlashCommandInteractionEvent event, GuildMusicManager m, Guild guild, String searchQuery) { + private TrackLoader.LoadCallbacks loader(final SlashCommandInteractionEvent event, final GuildMusicManager m, final Guild guild, final String searchQuery) { return new TrackLoader.LoadCallbacks() { @Override - public void onTrackLoaded(Track t) { + public void onTrackLoaded(final Track t) { addAndReply(event, m, t); } @Override - public void onPlaylistLoaded(PlaylistLoaded r) { + public void onPlaylistLoaded(final PlaylistLoaded r) { int c = 0; for (Track t : r.getTracks()) { m.getScheduler().enqueue(t); @@ -76,7 +73,7 @@ public class PlaySlashHandler { } @Override - public void onSearchResults(List ts) { + public void onSearchResults(final List ts) { if (ts.isEmpty()) { onNoMatches(); return; @@ -98,7 +95,7 @@ public class PlaySlashHandler { } @Override - public void onLoadFailed(LoadFailed e) { + public void onLoadFailed(final LoadFailed e) { event .getHook() .editOriginalEmbeds( @@ -112,7 +109,7 @@ public class PlaySlashHandler { }; } - private void addAndReply(SlashCommandInteractionEvent event, GuildMusicManager m, Track t) { + private void addAndReply(final SlashCommandInteractionEvent event, final GuildMusicManager m, final Track t) { m.getScheduler().enqueue(t); event .getHook() @@ -123,7 +120,7 @@ public class PlaySlashHandler { .queue(); } - private static Member requireVoiceChannel(SlashCommandInteractionEvent event) { + private static Member requireVoiceChannel(final SlashCommandInteractionEvent event) { Member member = event.getMember(); if (member != null && member.getVoiceState().inAudioChannel()) return member; event @@ -133,7 +130,7 @@ public class PlaySlashHandler { return null; } - static String formatDuration(long millis) { + static String formatDuration(final long millis) { long totalSec = millis / 1000; long hours = totalSec / 3600; long minutes = (totalSec % 3600) / 60; diff --git a/src/main/java/creator/loki/feature/music/slash/QueueSlashHandler.java b/src/main/java/creator/loki/feature/music/slash/QueueSlashHandler.java index 4f1dae7..156142b 100644 --- a/src/main/java/creator/loki/feature/music/slash/QueueSlashHandler.java +++ b/src/main/java/creator/loki/feature/music/slash/QueueSlashHandler.java @@ -19,7 +19,7 @@ public class QueueSlashHandler { this.pm = pm; } - public void handleStop(SlashCommandInteractionEvent ev) { + public void handleStop(final SlashCommandInteractionEvent ev) { if (reqVoice(ev) == null) return; pm.getMusicManager(ev.getGuild().getIdLong()).stop(); ev.getGuild().getJDA().getDirectAudioController().disconnect(ev.getGuild()); @@ -27,7 +27,7 @@ public class QueueSlashHandler { .queue(); } - public void handleSkip(SlashCommandInteractionEvent ev) { + public void handleSkip(final SlashCommandInteractionEvent ev) { if (reqVoice(ev) == null) return; var s = pm.getMusicManager(ev.getGuild().getIdLong()).getScheduler(); if (s.getCurrentTrack() == null) { @@ -39,7 +39,7 @@ public class QueueSlashHandler { ev.replyEmbeds(EmbedTemplates.info("Пропущено", "**" + t + "**")).queue(); } - public void handleQueue(SlashCommandInteractionEvent ev) { + public void handleQueue(final SlashCommandInteractionEvent ev) { var s = pm.getMusicManager(ev.getGuild().getIdLong()).getScheduler(); var cur = s.getCurrentTrack(); var q = s.getQueue(); @@ -56,7 +56,7 @@ public class QueueSlashHandler { ev.replyEmbeds(eb.build()).queue(); } - private String buildQueueList(List q) { + private String buildQueueList(final List q) { var sb = new StringBuilder(); var show = Math.min(q.size(), 10); for (int i = 0; i < show; i++) { @@ -67,7 +67,7 @@ public class QueueSlashHandler { return sb.toString(); } - public void handleNowPlaying(SlashCommandInteractionEvent ev) { + public void handleNowPlaying(final SlashCommandInteractionEvent ev) { var track = pm.getMusicManager(ev.getGuild().getIdLong()).getScheduler().getCurrentTrack(); if (track == null) { ev.reply("Сейчас ничего не играет.").queue(); @@ -87,7 +87,7 @@ public class QueueSlashHandler { ev.replyEmbeds(eb).queue(); } - public void handleVolume(SlashCommandInteractionEvent ev) { + public void handleVolume(final SlashCommandInteractionEvent ev) { if (reqVoice(ev) == null) return; var link = pm.getLavalinkManager().getClient().getLinkIfCached(ev.getGuild().getIdLong()); var opt = ev.getOption("percent"); @@ -103,7 +103,7 @@ public class QueueSlashHandler { ev.replyEmbeds(EmbedTemplates.info("Громкость", "Установлена на **" + vol + "%**")).queue(); } - public void handlePause(SlashCommandInteractionEvent ev) { + public void handlePause(final SlashCommandInteractionEvent ev) { if (reqVoice(ev) == null) return; pm.getMusicManager(ev.getGuild().getIdLong()) .getPlayer() @@ -111,7 +111,7 @@ public class QueueSlashHandler { ev.replyEmbeds(EmbedTemplates.info("Пауза", "Музыка поставлена на паузу.")).queue(); } - public void handleResume(SlashCommandInteractionEvent ev) { + public void handleResume(final SlashCommandInteractionEvent ev) { if (reqVoice(ev) == null) return; pm.getMusicManager(ev.getGuild().getIdLong()) .getPlayer() @@ -119,13 +119,13 @@ public class QueueSlashHandler { ev.replyEmbeds(EmbedTemplates.info("Продолжаем", "Воспроизведение продолжено.")).queue(); } - public void handleShuffle(SlashCommandInteractionEvent ev) { + public void handleShuffle(final SlashCommandInteractionEvent ev) { if (reqVoice(ev) == null) return; pm.getMusicManager(ev.getGuild().getIdLong()).getScheduler().shuffle(); ev.replyEmbeds(EmbedTemplates.info("Перемешано", "Очередь перемешана.")).queue(); } - public void handleRepeat(SlashCommandInteractionEvent ev) { + public void handleRepeat(final SlashCommandInteractionEvent ev) { if (reqVoice(ev) == null) return; var s = pm.getMusicManager(ev.getGuild().getIdLong()).getScheduler(); var now = !s.isRepeating(); @@ -134,7 +134,7 @@ public class QueueSlashHandler { ev.replyEmbeds(EmbedTemplates.info("Повтор", d)).queue(); } - private Member reqVoice(SlashCommandInteractionEvent ev) { + private Member reqVoice(final SlashCommandInteractionEvent ev) { var m = ev.getMember(); if (m != null && m.getVoiceState().inAudioChannel()) return m; var em = EmbedTemplates.error("Голосовой канал", "Зайди в голосовой канал сначала."); @@ -142,7 +142,7 @@ public class QueueSlashHandler { return null; } - static String progressBar(long pos, long dur) { + static String progressBar(final long pos, long dur) { if (dur <= 0) dur = 1; int total = 20; int filled = (int) ((double) pos / dur * total); diff --git a/src/main/java/creator/loki/feature/profile/ProfileModule.java b/src/main/java/creator/loki/feature/profile/ProfileModule.java index 430857f..f250cc9 100644 --- a/src/main/java/creator/loki/feature/profile/ProfileModule.java +++ b/src/main/java/creator/loki/feature/profile/ProfileModule.java @@ -16,11 +16,7 @@ public class ProfileModule extends AbstractModule { @Provides @Singleton - ProfileService provideProfileService( - UserStatsRepository repository, - LevelService levelService, - LeaderboardService leaderboardService, - ReputationRepository reputationRepository) { + ProfileService provideProfileService(final UserStatsRepository repository, final LevelService levelService, final LeaderboardService leaderboardService, final ReputationRepository reputationRepository) { return new ProfileService(repository, levelService, leaderboardService, reputationRepository); } } diff --git a/src/main/java/creator/loki/feature/profile/command/ProfileCommand.java b/src/main/java/creator/loki/feature/profile/command/ProfileCommand.java index 7c48f92..35eee86 100644 --- a/src/main/java/creator/loki/feature/profile/command/ProfileCommand.java +++ b/src/main/java/creator/loki/feature/profile/command/ProfileCommand.java @@ -39,7 +39,7 @@ public class ProfileCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { Member target; if (!context.getMessage().getMentions().getMembers().isEmpty()) { diff --git a/src/main/java/creator/loki/feature/profile/render/RankCardGenerator.java b/src/main/java/creator/loki/feature/profile/render/RankCardGenerator.java index 3cba936..c3751ef 100644 --- a/src/main/java/creator/loki/feature/profile/render/RankCardGenerator.java +++ b/src/main/java/creator/loki/feature/profile/render/RankCardGenerator.java @@ -19,7 +19,7 @@ import creator.loki.feature.profile.model.ProfileData; public class RankCardGenerator { private final RankCardRenderer renderer = new RankCardRenderer(); - public BufferedImage generate(ProfileData data) throws Exception { + public BufferedImage generate(final ProfileData data) throws Exception { BufferedImage canvas = new BufferedImage(W, H, BufferedImage.TYPE_INT_ARGB); Graphics2D g = canvas.createGraphics(); RankCardRenderer.applyHints(g); @@ -86,7 +86,7 @@ public class RankCardGenerator { return canvas; } - private void drawCard(Graphics2D g, int x, int y, int w, int h) { + private void drawCard(final Graphics2D g, final int x, final int y, final int w, final int h) { RoundRectangle2D rect = new RoundRectangle2D.Float(x, y, w, h, 36, 36); g.setColor(new Color(10, 10, 18, 210)); g.fill(rect); @@ -99,7 +99,7 @@ public class RankCardGenerator { g.draw(rect); } - private void drawAvatar(Graphics2D g, BufferedImage src, int x, int y, int size) { + private void drawAvatar(final Graphics2D g, final BufferedImage src, final int x, final int y, final int size) { g.setColor(new Color(255, 145, 0, 45)); g.fillOval(x - 10, y - 10, size + 20, size + 20); Ellipse2D clip = new Ellipse2D.Double(x, y, size, size); @@ -111,7 +111,7 @@ public class RankCardGenerator { g.drawOval(x, y, size, size); } - private void drawLevelTag(Graphics2D g, int level, int x, int y) { + private void drawLevelTag(final Graphics2D g, final int level, final int x, final int y) { String text = "LVL " + level; g.setFont(renderer.loadFont("fonts/Inter-Bold.ttf", 20f)); FontMetrics fm = g.getFontMetrics(); @@ -124,7 +124,7 @@ public class RankCardGenerator { g.drawString(text, x + px, y + py + th - 2); } - private void drawRankBadge(Graphics2D g, int rank) { + private void drawRankBadge(final Graphics2D g, final int rank) { int bx = W - PAD - 20 - 110; int by = PAD + 22; g.setColor(new Color(20, 20, 30, 200)); diff --git a/src/main/java/creator/loki/feature/profile/render/RankCardIcons.java b/src/main/java/creator/loki/feature/profile/render/RankCardIcons.java index 62d87ac..cc7927a 100644 --- a/src/main/java/creator/loki/feature/profile/render/RankCardIcons.java +++ b/src/main/java/creator/loki/feature/profile/render/RankCardIcons.java @@ -11,7 +11,7 @@ public final class RankCardIcons { STAR } - public static void draw(Graphics2D g, StatIcon icon, int cx, int cy, int r) { + public static void draw(final Graphics2D g, final StatIcon icon, final int cx, final int cy, final int r) { g.setStroke(new BasicStroke(2f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); switch (icon) { case CLOCK -> drawClock(g, cx, cy, r); @@ -20,14 +20,14 @@ public final class RankCardIcons { } } - private static void drawClock(Graphics2D g, int cx, int cy, int r) { + private static void drawClock(final Graphics2D g, final int cx, final int cy, final int r) { g.drawOval(cx - r, cy - r, r * 2, r * 2); g.drawLine(cx, cy, cx - r / 2, cy - r / 2); g.drawLine(cx, cy, cx, cy - (int) (r * 0.8)); g.fillOval(cx - 2, cy - 2, 4, 4); } - private static void drawMessage(Graphics2D g, int cx, int cy, int r) { + private static void drawMessage(final Graphics2D g, final int cx, final int cy, final int r) { int bx = cx - r, by = cy - (int) (r * 0.85); int bw = r * 2, bh = (int) (r * 1.5); g.drawRoundRect(bx, by, bw, bh, 6, 6); @@ -39,7 +39,7 @@ public final class RankCardIcons { g.fill(tail); } - private static void drawStar(Graphics2D g, int cx, int cy, int r) { + private static void drawStar(final Graphics2D g, final int cx, final int cy, final int r) { double inner = r * 0.42; GeneralPath star = new GeneralPath(); for (int i = 0; i < 10; i++) { diff --git a/src/main/java/creator/loki/feature/profile/render/RankCardRenderer.java b/src/main/java/creator/loki/feature/profile/render/RankCardRenderer.java index 47e1bd1..9cf2837 100644 --- a/src/main/java/creator/loki/feature/profile/render/RankCardRenderer.java +++ b/src/main/java/creator/loki/feature/profile/render/RankCardRenderer.java @@ -20,7 +20,7 @@ import javax.imageio.ImageIO; public class RankCardRenderer { private static final Map FONT_CACHE = new ConcurrentHashMap<>(); - public void drawXpBar(Graphics2D g, int x, int y, int w, int h, int xp, int maxXp) { + public void drawXpBar(final Graphics2D g, final int x, final int y, final int w, final int h, final int xp, final int maxXp) { g.setColor(BAR_BG); g.fillRoundRect(x, y, w, h, h, h); float pct = maxXp > 0 ? Math.min(1f, (float) xp / maxXp) : 0f; @@ -40,15 +40,7 @@ public class RankCardRenderer { g.fillOval(dotX + 5, dotY + 5, dotD - 10, dotD - 10); } - public void drawStatCard( - Graphics2D g, - String title, - String value, - RankCardIcons.StatIcon icon, - int x, - int y, - int w, - int h) { + public void drawStatCard(final Graphics2D g, final String title, final String value, final RankCardIcons.StatIcon icon, final int x, final int y, final int w, final int h) { g.setColor(DARK_CARD); g.fillRoundRect(x, y, w, h, 20, 20); g.setStroke(new BasicStroke(1f)); @@ -71,11 +63,11 @@ public class RankCardRenderer { g.drawString(title, textX, y + 72); } - public Font loadFont(String path, float size) { + public Font loadFont(final String path, final float size) { String key = path + "@" + size; Font cached = FONT_CACHE.get(key); if (cached != null) return cached; - try (InputStream is = getClass().getClassLoader().getResourceAsStream("assets/" + path)) { + try (final InputStream is = getClass().getClassLoader().getResourceAsStream("assets/" + path)) { if (is == null) { Font fallback = new Font("SansSerif", Font.BOLD, (int) size); FONT_CACHE.put(key, fallback); @@ -91,8 +83,8 @@ public class RankCardRenderer { } } - public BufferedImage loadBackground(String path) throws Exception { - try (InputStream is = getClass().getClassLoader().getResourceAsStream("assets/" + path)) { + public BufferedImage loadBackground(final String path) throws Exception { + try (final InputStream is = getClass().getClassLoader().getResourceAsStream("assets/" + path)) { if (is == null) { BufferedImage fallback = new BufferedImage(W, H, BufferedImage.TYPE_INT_RGB); Graphics2D fg = fallback.createGraphics(); @@ -105,7 +97,7 @@ public class RankCardRenderer { } } - public static void applyHints(Graphics2D g) { + public static void applyHints(final Graphics2D g) { g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g.setRenderingHint( RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB); diff --git a/src/main/java/creator/loki/feature/profile/service/ProfileService.java b/src/main/java/creator/loki/feature/profile/service/ProfileService.java index 8e4e0d0..cb9320f 100644 --- a/src/main/java/creator/loki/feature/profile/service/ProfileService.java +++ b/src/main/java/creator/loki/feature/profile/service/ProfileService.java @@ -35,7 +35,7 @@ public class ProfileService { } /** Сгенерировать профильную карточку для пользователя */ - public byte[] generateProfileCard(Member member) throws Exception { + public byte[] generateProfileCard(final Member member) throws Exception { String userId = member.getId(); UserStats stats = repository.getUserStats(userId); diff --git a/src/main/java/creator/loki/feature/radio/RadioCommandRegistrar.java b/src/main/java/creator/loki/feature/radio/RadioCommandRegistrar.java index b8b0392..323083a 100644 --- a/src/main/java/creator/loki/feature/radio/RadioCommandRegistrar.java +++ b/src/main/java/creator/loki/feature/radio/RadioCommandRegistrar.java @@ -14,7 +14,7 @@ public class RadioCommandRegistrar implements CommandRegistrar { } @Override - public void register(CommandRegistry registry) { + public void register(final CommandRegistry registry) { registry.register(radioCommand); } } diff --git a/src/main/java/creator/loki/feature/radio/commands/RadioCommand.java b/src/main/java/creator/loki/feature/radio/commands/RadioCommand.java index 508a736..69819b5 100644 --- a/src/main/java/creator/loki/feature/radio/commands/RadioCommand.java +++ b/src/main/java/creator/loki/feature/radio/commands/RadioCommand.java @@ -40,7 +40,7 @@ public class RadioCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { Guild guild = context.getGuild(); if (guild == null) return; @@ -78,7 +78,7 @@ public class RadioCommand implements Command { } } - private void handleSet(CommandContext context, List args) { + private void handleSet(final CommandContext context, final List args) { if (args.size() < 2) { context .getChannel() @@ -102,7 +102,7 @@ public class RadioCommand implements Command { .queue(); } - private void handleOn(CommandContext context) { + private void handleOn(final CommandContext context) { if (!radioManager.hasRadioBot()) { context .getChannel() @@ -141,7 +141,7 @@ public class RadioCommand implements Command { .queue(); } - private void handleOff(CommandContext context) { + private void handleOff(final CommandContext context) { if (!radioManager.hasRadioBot()) { context .getChannel() @@ -156,7 +156,7 @@ public class RadioCommand implements Command { .queue(); } - private void handleVolume(CommandContext context, List args) { + private void handleVolume(final CommandContext context, final List args) { long guildId = context.getGuild().getIdLong(); if (args.size() < 2) { int vol = radioManager.getVolume(guildId); diff --git a/src/main/java/creator/loki/feature/radio/listener/RadioBotListener.java b/src/main/java/creator/loki/feature/radio/listener/RadioBotListener.java index 745646a..df96a7a 100644 --- a/src/main/java/creator/loki/feature/radio/listener/RadioBotListener.java +++ b/src/main/java/creator/loki/feature/radio/listener/RadioBotListener.java @@ -25,7 +25,7 @@ public class RadioBotListener extends ListenerAdapter { } @Override - public void onMessageReceived(@NotNull MessageReceivedEvent event) { + public void onMessageReceived(@NotNull final MessageReceivedEvent event) { if (event.getAuthor().isBot()) return; String content = event.getMessage().getContentRaw(); if (!content.startsWith(PREFIX)) return; @@ -65,7 +65,7 @@ public class RadioBotListener extends ListenerAdapter { } } - private Member requireVoiceChannel(MessageReceivedEvent event) { + private Member requireVoiceChannel(final MessageReceivedEvent event) { Member member = event.getMember(); if (member == null || !member.getVoiceState().inAudioChannel()) { event.getChannel().sendMessage("❌ Зайди в голосовой канал сначала.").queue(); @@ -74,7 +74,7 @@ public class RadioBotListener extends ListenerAdapter { return member; } - private void handlePlay(MessageReceivedEvent event, List args) { + private void handlePlay(final MessageReceivedEvent event, final List args) { Member member = requireVoiceChannel(event); if (member == null) return; @@ -98,7 +98,7 @@ public class RadioBotListener extends ListenerAdapter { event.getChannel().sendMessage("📻 Радио запущено: **" + url + "**").queue(); } - private void handleStop(MessageReceivedEvent event) { + private void handleStop(final MessageReceivedEvent event) { Member member = requireVoiceChannel(event); if (member == null) return; @@ -106,7 +106,7 @@ public class RadioBotListener extends ListenerAdapter { event.getChannel().sendMessage("⏹️ Радио остановлено.").queue(); } - private void handleVolume(MessageReceivedEvent event, List args) { + private void handleVolume(final MessageReceivedEvent event, final List args) { long guildId = event.getGuild().getIdLong(); if (args.isEmpty()) { int vol = radioManager.getVolume(guildId); @@ -122,7 +122,7 @@ public class RadioBotListener extends ListenerAdapter { } } - private void handleNowPlaying(MessageReceivedEvent event) { + private void handleNowPlaying(final MessageReceivedEvent event) { long guildId = event.getGuild().getIdLong(); String url = radioManager.getRadioUrl(guildId); if (url == null || !radioManager.isRadioActive(guildId)) { @@ -132,7 +132,7 @@ public class RadioBotListener extends ListenerAdapter { event.getChannel().sendMessage("📻 **Сейчас играет радио:** " + url).queue(); } - private void handleHelp(MessageReceivedEvent event) { + private void handleHelp(final MessageReceivedEvent event) { event .getChannel() .sendMessageEmbeds( diff --git a/src/main/java/creator/loki/feature/radio/service/RadioManager.java b/src/main/java/creator/loki/feature/radio/service/RadioManager.java index d48775d..9c333a8 100644 --- a/src/main/java/creator/loki/feature/radio/service/RadioManager.java +++ b/src/main/java/creator/loki/feature/radio/service/RadioManager.java @@ -31,7 +31,7 @@ public class RadioManager { this.queueRepository = queueRepository; } - public void setLavalinkManager(LavalinkManager lm) { + public void setLavalinkManager(final LavalinkManager lm) { this.lavalinkManager = lm; } @@ -39,7 +39,7 @@ public class RadioManager { this.radioJda = radioJda; } - public void setRadio(long guildId, String streamUrl) { + public void setRadio(final long guildId, String streamUrl) { radioStates.compute( guildId, (id, state) -> { @@ -50,12 +50,12 @@ public class RadioManager { LoggerDecorator.music(logger, "Radio URL set for guild " + guildId + ": " + streamUrl); } - public String getRadioUrl(long guildId) { + public String getRadioUrl(final long guildId) { GuildRadioState state = radioStates.get(guildId); return state != null ? state.streamUrl : null; } - public void startRadio(long guildId, long channelId) { + public void startRadio(final long guildId, final long channelId) { GuildRadioState state = radioStates.get(guildId); if (state == null || state.streamUrl == null || state.streamUrl.isBlank()) return; if (radioJda == null || lavalinkManager == null) return; @@ -99,14 +99,14 @@ public class RadioManager { .subscribe( new AbstractAudioLoadResultHandler() { @Override - public void ontrackLoaded(TrackLoaded r) { + public void ontrackLoaded(final TrackLoaded r) { if (vol != 100) link.createOrUpdatePlayer().setVolume(vol).subscribe(); mm.getScheduler().enqueue(r.getTrack()); LoggerDecorator.music(logger, "Radio started in guild " + guildId); } @Override - public void onPlaylistLoaded(dev.arbjerg.lavalink.client.player.PlaylistLoaded r) { + public void onPlaylistLoaded(final dev.arbjerg.lavalink.client.player.PlaylistLoaded r) { if (!r.getTracks().isEmpty()) { if (vol != 100) link.createOrUpdatePlayer().setVolume(vol).subscribe(); mm.getScheduler().enqueue(r.getTracks().get(0)); @@ -115,7 +115,7 @@ public class RadioManager { } @Override - public void onSearchResultLoaded(dev.arbjerg.lavalink.client.player.SearchResult r) { + public void onSearchResultLoaded(final dev.arbjerg.lavalink.client.player.SearchResult r) { if (!r.getTracks().isEmpty()) { if (vol != 100) link.createOrUpdatePlayer().setVolume(vol).subscribe(); mm.getScheduler().enqueue(r.getTracks().get(0)); @@ -129,7 +129,7 @@ public class RadioManager { } @Override - public void loadFailed(dev.arbjerg.lavalink.client.player.LoadFailed e) { + public void loadFailed(final dev.arbjerg.lavalink.client.player.LoadFailed e) { LoggerDecorator.warn( logger, "Failed to load radio: " @@ -140,7 +140,7 @@ public class RadioManager { }); } - public void stopRadio(long guildId) { + public void stopRadio(final long guildId) { GuildRadioState state = radioStates.remove(guildId); if (state == null) return; if (state.musicManager != null) { @@ -158,7 +158,7 @@ public class RadioManager { LoggerDecorator.music(logger, "Radio stopped for guild " + guildId); } - public boolean isRadioActive(long guildId) { + public boolean isRadioActive(final long guildId) { GuildRadioState state = radioStates.get(guildId); return state != null && state.streamUrl != null; } @@ -171,12 +171,12 @@ public class RadioManager { return radioJda; } - public int getVolume(long guildId) { + public int getVolume(final long guildId) { GuildRadioState state = radioStates.get(guildId); return state != null ? state.volume : 100; } - public void setVolume(long guildId, int volume) { + public void setVolume(final long guildId, int volume) { GuildRadioState state = radioStates.get(guildId); if (state == null) return; state.volume = Math.max(0, Math.min(100, volume)); diff --git a/src/main/java/creator/loki/feature/rating/commands/body/FatCommand.java b/src/main/java/creator/loki/feature/rating/commands/body/FatCommand.java index cbfd4bf..dd0c567 100644 --- a/src/main/java/creator/loki/feature/rating/commands/body/FatCommand.java +++ b/src/main/java/creator/loki/feature/rating/commands/body/FatCommand.java @@ -40,7 +40,7 @@ public class FatCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!ratingService.checkAndApplyCooldown(context, "fat")) { return; } Member target = ratingService.resolveTarget(context); diff --git a/src/main/java/creator/loki/feature/rating/commands/body/MustacheCommand.java b/src/main/java/creator/loki/feature/rating/commands/body/MustacheCommand.java index e23f869..dec502c 100644 --- a/src/main/java/creator/loki/feature/rating/commands/body/MustacheCommand.java +++ b/src/main/java/creator/loki/feature/rating/commands/body/MustacheCommand.java @@ -40,7 +40,7 @@ public class MustacheCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!ratingService.checkAndApplyCooldown(context, "mustache")) { return; } Member target = ratingService.resolveTarget(context); diff --git a/src/main/java/creator/loki/feature/rating/commands/body/PpCommand.java b/src/main/java/creator/loki/feature/rating/commands/body/PpCommand.java index 1c9295f..a01f510 100644 --- a/src/main/java/creator/loki/feature/rating/commands/body/PpCommand.java +++ b/src/main/java/creator/loki/feature/rating/commands/body/PpCommand.java @@ -40,7 +40,7 @@ public class PpCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!ratingService.checkAndApplyCooldown(context, "pp")) { return; } Member target = ratingService.resolveTarget(context); diff --git a/src/main/java/creator/loki/feature/rating/commands/fortune/AuraCommand.java b/src/main/java/creator/loki/feature/rating/commands/fortune/AuraCommand.java index 746dfcd..c860a0a 100644 --- a/src/main/java/creator/loki/feature/rating/commands/fortune/AuraCommand.java +++ b/src/main/java/creator/loki/feature/rating/commands/fortune/AuraCommand.java @@ -40,7 +40,7 @@ public class AuraCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!ratingService.checkAndApplyCooldown(context, "aura")) { return; } Member target = ratingService.resolveTarget(context); diff --git a/src/main/java/creator/loki/feature/rating/commands/fortune/LuckCommand.java b/src/main/java/creator/loki/feature/rating/commands/fortune/LuckCommand.java index b06abb6..7dd023a 100644 --- a/src/main/java/creator/loki/feature/rating/commands/fortune/LuckCommand.java +++ b/src/main/java/creator/loki/feature/rating/commands/fortune/LuckCommand.java @@ -40,7 +40,7 @@ public class LuckCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!ratingService.checkAndApplyCooldown(context, "luck")) { return; } Member target = ratingService.resolveTarget(context); diff --git a/src/main/java/creator/loki/feature/rating/commands/fortune/RizzCommand.java b/src/main/java/creator/loki/feature/rating/commands/fortune/RizzCommand.java index fb1f5eb..3730de8 100644 --- a/src/main/java/creator/loki/feature/rating/commands/fortune/RizzCommand.java +++ b/src/main/java/creator/loki/feature/rating/commands/fortune/RizzCommand.java @@ -40,7 +40,7 @@ public class RizzCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!ratingService.checkAndApplyCooldown(context, "rizz")) { return; } Member target = ratingService.resolveTarget(context); diff --git a/src/main/java/creator/loki/feature/rating/commands/mind/BoykisserCommand.java b/src/main/java/creator/loki/feature/rating/commands/mind/BoykisserCommand.java index 94d5148..cb5973a 100644 --- a/src/main/java/creator/loki/feature/rating/commands/mind/BoykisserCommand.java +++ b/src/main/java/creator/loki/feature/rating/commands/mind/BoykisserCommand.java @@ -40,7 +40,7 @@ public class BoykisserCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!ratingService.checkAndApplyCooldown(context, "boykisser")) { return; } Member target = ratingService.resolveTarget(context); diff --git a/src/main/java/creator/loki/feature/rating/commands/mind/GayCommand.java b/src/main/java/creator/loki/feature/rating/commands/mind/GayCommand.java index 5b51b21..a88b21b 100644 --- a/src/main/java/creator/loki/feature/rating/commands/mind/GayCommand.java +++ b/src/main/java/creator/loki/feature/rating/commands/mind/GayCommand.java @@ -40,7 +40,7 @@ public class GayCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!ratingService.checkAndApplyCooldown(context, "gay")) { return; } Member target = ratingService.resolveTarget(context); diff --git a/src/main/java/creator/loki/feature/rating/commands/mind/IqCommand.java b/src/main/java/creator/loki/feature/rating/commands/mind/IqCommand.java index 3158003..6848b80 100644 --- a/src/main/java/creator/loki/feature/rating/commands/mind/IqCommand.java +++ b/src/main/java/creator/loki/feature/rating/commands/mind/IqCommand.java @@ -40,7 +40,7 @@ public class IqCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!ratingService.checkAndApplyCooldown(context, "iq")) { return; } Member target = ratingService.resolveTarget(context); diff --git a/src/main/java/creator/loki/feature/rating/commands/vibe/GlazeCommand.java b/src/main/java/creator/loki/feature/rating/commands/vibe/GlazeCommand.java index e959312..4c0ba9c 100644 --- a/src/main/java/creator/loki/feature/rating/commands/vibe/GlazeCommand.java +++ b/src/main/java/creator/loki/feature/rating/commands/vibe/GlazeCommand.java @@ -39,7 +39,7 @@ public class GlazeCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!ratingService.checkAndApplyCooldown(context, "glaze")) { return; } Member target = ratingService.resolveTarget(context); diff --git a/src/main/java/creator/loki/feature/rating/commands/vibe/GoonCommand.java b/src/main/java/creator/loki/feature/rating/commands/vibe/GoonCommand.java index b0cf0ea..5791ee0 100644 --- a/src/main/java/creator/loki/feature/rating/commands/vibe/GoonCommand.java +++ b/src/main/java/creator/loki/feature/rating/commands/vibe/GoonCommand.java @@ -39,7 +39,7 @@ public class GoonCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!ratingService.checkAndApplyCooldown(context, "goon")) { return; } Member target = ratingService.resolveTarget(context); diff --git a/src/main/java/creator/loki/feature/rating/commands/vibe/SimpCommand.java b/src/main/java/creator/loki/feature/rating/commands/vibe/SimpCommand.java index 9391e21..70b5ef2 100644 --- a/src/main/java/creator/loki/feature/rating/commands/vibe/SimpCommand.java +++ b/src/main/java/creator/loki/feature/rating/commands/vibe/SimpCommand.java @@ -39,7 +39,7 @@ public class SimpCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!ratingService.checkAndApplyCooldown(context, "simp")) { return; } Member target = ratingService.resolveTarget(context); diff --git a/src/main/java/creator/loki/feature/rating/commands/vibe/VibeCommand.java b/src/main/java/creator/loki/feature/rating/commands/vibe/VibeCommand.java index be82ec8..a7e047d 100644 --- a/src/main/java/creator/loki/feature/rating/commands/vibe/VibeCommand.java +++ b/src/main/java/creator/loki/feature/rating/commands/vibe/VibeCommand.java @@ -39,7 +39,7 @@ public class VibeCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!ratingService.checkAndApplyCooldown(context, "vibe")) { return; } Member target = ratingService.resolveTarget(context); diff --git a/src/main/java/creator/loki/feature/rating/config/RatingConfig.java b/src/main/java/creator/loki/feature/rating/config/RatingConfig.java index 32809b9..2db6246 100644 --- a/src/main/java/creator/loki/feature/rating/config/RatingConfig.java +++ b/src/main/java/creator/loki/feature/rating/config/RatingConfig.java @@ -105,7 +105,7 @@ public class RatingConfig { } /** Data-driven accessor — единая точка доступа для всех рейтингов. */ - public static List getLevels(String ratingName) { + public static List getLevels(final String ratingName) { var levels = LEVELS.get(ratingName); if (levels == null) { throw new IllegalArgumentException("Unknown rating: " + ratingName); @@ -116,7 +116,7 @@ public class RatingConfig { /** * Data-driven поиск уровня: `findLevel(value, "iq")` вместо `findLevel(value, getIqLevels())`. */ - public static RatingLevel findLevel(int value, String ratingName) { + public static RatingLevel findLevel(final int value, final String ratingName) { return RatingLevel.findLevel(value, getLevels(ratingName)); } diff --git a/src/main/java/creator/loki/feature/rating/config/RatingLevel.java b/src/main/java/creator/loki/feature/rating/config/RatingLevel.java index 32a9d0f..f04e8ee 100644 --- a/src/main/java/creator/loki/feature/rating/config/RatingLevel.java +++ b/src/main/java/creator/loki/feature/rating/config/RatingLevel.java @@ -34,7 +34,7 @@ public class RatingLevel { * @param levels список уровней (должен быть отсортирован по убыванию threshold) * @return подходящий уровень */ - public static RatingLevel findLevel(int value, List levels) { + public static RatingLevel findLevel(final int value, final List levels) { return levels.stream() .filter(level -> value >= level.threshold) .findFirst() diff --git a/src/main/java/creator/loki/feature/rating/repository/RatingsRepository.java b/src/main/java/creator/loki/feature/rating/repository/RatingsRepository.java index 5b4fc11..e2d066e 100644 --- a/src/main/java/creator/loki/feature/rating/repository/RatingsRepository.java +++ b/src/main/java/creator/loki/feature/rating/repository/RatingsRepository.java @@ -23,15 +23,15 @@ public class RatingsRepository { } /** Получить значение рейтинга */ - public Integer getRating(String guildId, String userId, String ratingType) { + public Integer getRating(final String guildId, final String userId, final String ratingType) { String sql = "SELECT value FROM ratings WHERE guild_id = ? AND user_id = ? AND rating_type = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); stmt.setString(2, userId); stmt.setString(3, ratingType); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { if (rs.next()) { return rs.getInt("value"); } @@ -44,7 +44,7 @@ public class RatingsRepository { } /** Установить значение рейтинга */ - public void setRating(String guildId, String userId, String ratingType, int value) { + public void setRating(final String guildId, final String userId, final String ratingType, int value) { String sql = """ INSERT INTO ratings (guild_id, user_id, rating_type, value) @@ -53,7 +53,7 @@ public class RatingsRepository { DO UPDATE SET value = excluded.value """; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); stmt.setString(2, userId); stmt.setString(3, ratingType); @@ -65,20 +65,20 @@ public class RatingsRepository { } /** Проверить существует ли рейтинг */ - public boolean hasRating(String guildId, String userId, String ratingType) { + public boolean hasRating(final String guildId, final String userId, final String ratingType) { return getRating(guildId, userId, ratingType) != null; } /** Получить все рейтинги пользователя */ - public Map getAllRatings(String guildId, String userId) { + public Map getAllRatings(final String guildId, final String userId) { Map ratings = new HashMap<>(); String sql = "SELECT rating_type, value FROM ratings WHERE guild_id = ? AND user_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); stmt.setString(2, userId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { while (rs.next()) { ratings.put(rs.getString("rating_type"), rs.getInt("value")); } @@ -91,13 +91,13 @@ public class RatingsRepository { } /** Получить количество пользователей с рейтингами на сервере */ - public int getUserCountWithRatings(String guildId) { + public int getUserCountWithRatings(final String guildId) { String sql = "SELECT COUNT(DISTINCT user_id) as count FROM ratings WHERE guild_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { if (rs.next()) { return rs.getInt("count"); } @@ -110,10 +110,10 @@ public class RatingsRepository { } /** Удалить все рейтинги пользователя */ - public void deleteUserRatings(String guildId, String userId) { + public void deleteUserRatings(final String guildId, final String userId) { String sql = "DELETE FROM ratings WHERE guild_id = ? AND user_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); stmt.setString(2, userId); stmt.executeUpdate(); @@ -123,10 +123,10 @@ public class RatingsRepository { } /** Удалить все рейтинги на сервере */ - public void deleteAllRatings(String guildId) { + public void deleteAllRatings(final String guildId) { String sql = "DELETE FROM ratings WHERE guild_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); stmt.executeUpdate(); } catch (SQLException e) { diff --git a/src/main/java/creator/loki/feature/reactroles/ReactionRolesCommandRegistrar.java b/src/main/java/creator/loki/feature/reactroles/ReactionRolesCommandRegistrar.java index 4afe057..1a0859e 100644 --- a/src/main/java/creator/loki/feature/reactroles/ReactionRolesCommandRegistrar.java +++ b/src/main/java/creator/loki/feature/reactroles/ReactionRolesCommandRegistrar.java @@ -15,7 +15,7 @@ public class ReactionRolesCommandRegistrar implements CommandRegistrar { } @Override - public void register(CommandRegistry registry) { + public void register(final CommandRegistry registry) { registry.register(new ReactionRoleCommand(repository)); } } diff --git a/src/main/java/creator/loki/feature/reactroles/commands/ReactionRoleCommand.java b/src/main/java/creator/loki/feature/reactroles/commands/ReactionRoleCommand.java index 43b978a..eb5bd0e 100644 --- a/src/main/java/creator/loki/feature/reactroles/commands/ReactionRoleCommand.java +++ b/src/main/java/creator/loki/feature/reactroles/commands/ReactionRoleCommand.java @@ -41,7 +41,7 @@ public class ReactionRoleCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!context.getAuthor().hasPermission(Permission.ADMINISTRATOR)) { context.getChannel() .sendMessageEmbeds(EmbedTemplates.error("Нет доступа", "Требуются права администратора")) @@ -72,7 +72,7 @@ public class ReactionRoleCommand implements Command { } } - private void handleSetup(CommandContext context, net.dv8tion.jda.api.entities.Guild guild, List args) { + private void handleSetup(final CommandContext context, final net.dv8tion.jda.api.entities.Guild guild, final List args) { if (args.size() < 4) { context.getChannel() .sendMessageEmbeds(EmbedTemplates.error("Неверное использование", @@ -102,7 +102,7 @@ public class ReactionRoleCommand implements Command { .queue(); } - private void handleRemove(CommandContext context, List args) { + private void handleRemove(final CommandContext context, final List args) { if (args.size() < 3) { context.getChannel() .sendMessageEmbeds(EmbedTemplates.error("Неверное использование", @@ -121,7 +121,7 @@ public class ReactionRoleCommand implements Command { .queue(); } - private void handleList(CommandContext context, net.dv8tion.jda.api.entities.Guild guild, List args) { + private void handleList(final CommandContext context, final net.dv8tion.jda.api.entities.Guild guild, final List args) { List bindings; if (args.size() >= 2) { bindings = repository.findByMessage(args.get(1)); @@ -148,7 +148,7 @@ public class ReactionRoleCommand implements Command { .queue(); } - private void sendHelp(CommandContext context) { + private void sendHelp(final CommandContext context) { context.getChannel() .sendMessageEmbeds(EmbedTemplates.info("Reaction Role", "`reactionrole setup ` — добавить связь\n" diff --git a/src/main/java/creator/loki/feature/reactroles/listener/ReactionRoleListener.java b/src/main/java/creator/loki/feature/reactroles/listener/ReactionRoleListener.java index 39d2dd3..2bc53b1 100644 --- a/src/main/java/creator/loki/feature/reactroles/listener/ReactionRoleListener.java +++ b/src/main/java/creator/loki/feature/reactroles/listener/ReactionRoleListener.java @@ -25,7 +25,7 @@ public class ReactionRoleListener extends ListenerAdapter { } @Override - public void onMessageReactionAdd(@NotNull MessageReactionAddEvent event) { + public void onMessageReactionAdd(@NotNull final MessageReactionAddEvent event) { if (event.getUser() == null || event.getUser().isBot()) return; if (event.getGuild() == null) return; @@ -52,7 +52,7 @@ public class ReactionRoleListener extends ListenerAdapter { } @Override - public void onMessageReactionRemove(@NotNull MessageReactionRemoveEvent event) { + public void onMessageReactionRemove(@NotNull final MessageReactionRemoveEvent event) { if (event.getUser() == null || event.getUser().isBot()) return; if (event.getGuild() == null) return; diff --git a/src/main/java/creator/loki/feature/reactroles/repository/ReactionRoleRepository.java b/src/main/java/creator/loki/feature/reactroles/repository/ReactionRoleRepository.java index 51e5d84..3131b6a 100644 --- a/src/main/java/creator/loki/feature/reactroles/repository/ReactionRoleRepository.java +++ b/src/main/java/creator/loki/feature/reactroles/repository/ReactionRoleRepository.java @@ -23,14 +23,14 @@ public class ReactionRoleRepository { this.database = database; } - public void save(String guildId, String channelId, String messageId, String emoji, String roleId) { + public void save(final String guildId, final String channelId, final String messageId, String emoji, final String roleId) { String sql = """ INSERT OR REPLACE INTO reaction_roles (guild_id, channel_id, message_id, emoji, role_id) VALUES (?, ?, ?, ?, ?) """; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); stmt.setString(2, channelId); stmt.setString(3, messageId); @@ -42,13 +42,13 @@ public class ReactionRoleRepository { } } - public List findByMessage(String messageId) { + public List findByMessage(final String messageId) { String sql = "SELECT id, guild_id, channel_id, message_id, emoji, role_id FROM reaction_roles WHERE message_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, messageId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { List results = new ArrayList<>(); while (rs.next()) { results.add(mapRow(rs)); @@ -61,13 +61,13 @@ public class ReactionRoleRepository { } } - public List findByGuild(String guildId) { + public List findByGuild(final String guildId) { String sql = "SELECT id, guild_id, channel_id, message_id, emoji, role_id FROM reaction_roles WHERE guild_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { List results = new ArrayList<>(); while (rs.next()) { results.add(mapRow(rs)); @@ -83,7 +83,7 @@ public class ReactionRoleRepository { public void delete(int id) { String sql = "DELETE FROM reaction_roles WHERE id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setInt(1, id); stmt.executeUpdate(); } catch (SQLException e) { @@ -91,10 +91,10 @@ public class ReactionRoleRepository { } } - public void deleteByMessageAndEmoji(String messageId, String emoji) { + public void deleteByMessageAndEmoji(final String messageId, String emoji) { String sql = "DELETE FROM reaction_roles WHERE message_id = ? AND emoji = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, messageId); stmt.setString(2, emoji); stmt.executeUpdate(); @@ -103,7 +103,7 @@ public class ReactionRoleRepository { } } - private ReactionRole mapRow(ResultSet rs) throws SQLException { + private ReactionRole mapRow(final ResultSet rs) throws SQLException { return new ReactionRole( rs.getInt("id"), rs.getString("guild_id"), diff --git a/src/main/java/creator/loki/feature/reputation/MinusRepCommand.java b/src/main/java/creator/loki/feature/reputation/MinusRepCommand.java index 3814d66..e8a8b49 100644 --- a/src/main/java/creator/loki/feature/reputation/MinusRepCommand.java +++ b/src/main/java/creator/loki/feature/reputation/MinusRepCommand.java @@ -42,7 +42,7 @@ public class MinusRepCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { List mentioned = context.getMessage().getMentions().getMembers(); if (mentioned.isEmpty()) { diff --git a/src/main/java/creator/loki/feature/reputation/RepCommand.java b/src/main/java/creator/loki/feature/reputation/RepCommand.java index 0f505d1..6d19cbb 100644 --- a/src/main/java/creator/loki/feature/reputation/RepCommand.java +++ b/src/main/java/creator/loki/feature/reputation/RepCommand.java @@ -41,7 +41,7 @@ public class RepCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { List mentioned = context.getMessage().getMentions().getMembers(); // Если нет упоминаний - показать свою репутацию @@ -97,7 +97,7 @@ public class RepCommand implements Command { .queue(); } - private void showReputation(CommandContext context, Member member) { + private void showReputation(final CommandContext context, final Member member) { double rep = reputationRepository.getReputation(member.getId()); context diff --git a/src/main/java/creator/loki/feature/reputation/RepTopCommand.java b/src/main/java/creator/loki/feature/reputation/RepTopCommand.java index b499052..8501e40 100644 --- a/src/main/java/creator/loki/feature/reputation/RepTopCommand.java +++ b/src/main/java/creator/loki/feature/reputation/RepTopCommand.java @@ -39,7 +39,7 @@ public class RepTopCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { Map reputation = reputationRepository.getTopReputation(10); if (reputation.isEmpty()) { diff --git a/src/main/java/creator/loki/feature/reputation/repository/ReputationRepository.java b/src/main/java/creator/loki/feature/reputation/repository/ReputationRepository.java index 0138540..4607fb4 100644 --- a/src/main/java/creator/loki/feature/reputation/repository/ReputationRepository.java +++ b/src/main/java/creator/loki/feature/reputation/repository/ReputationRepository.java @@ -20,13 +20,13 @@ public class ReputationRepository { } /** Получить репутацию пользователя */ - public double getReputation(String userId) { + public double getReputation(final String userId) { String sql = "SELECT reputation FROM reputation WHERE user_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, userId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { if (rs.next()) { return rs.getDouble("reputation"); } @@ -39,7 +39,7 @@ public class ReputationRepository { } /** Установить репутацию пользователя */ - public void setReputation(String userId, double reputation) { + public void setReputation(final String userId, double reputation) { String sql = """ INSERT INTO reputation (user_id, reputation) @@ -48,7 +48,7 @@ public class ReputationRepository { DO UPDATE SET reputation = excluded.reputation """; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, userId); stmt.setDouble(2, reputation); stmt.executeUpdate(); @@ -58,7 +58,7 @@ public class ReputationRepository { } /** Добавить репутацию пользователю */ - public void addReputation(String userId, double amount) { + public void addReputation(final String userId, final double amount) { double current = getReputation(userId); setReputation(userId, current + amount); logger.info( @@ -69,14 +69,14 @@ public class ReputationRepository { } /** Получить топ пользователей по репутации */ - public Map getTopReputation(int limit) { + public Map getTopReputation(final int limit) { Map top = new HashMap<>(); String sql = "SELECT user_id, reputation FROM reputation ORDER BY reputation DESC LIMIT ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setInt(1, limit); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { while (rs.next()) { top.put(rs.getString("user_id"), rs.getDouble("reputation")); } @@ -93,7 +93,7 @@ public class ReputationRepository { Map all = new HashMap<>(); String sql = "SELECT user_id, reputation FROM reputation"; - try (PreparedStatement stmt = database.prepare(sql); + try (final PreparedStatement stmt = database.prepare(sql); ResultSet rs = stmt.executeQuery()) { while (rs.next()) { @@ -107,10 +107,10 @@ public class ReputationRepository { } /** Удалить репутацию пользователя */ - public void deleteReputation(String userId) { + public void deleteReputation(final String userId) { String sql = "DELETE FROM reputation WHERE user_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, userId); stmt.executeUpdate(); } catch (SQLException e) { diff --git a/src/main/java/creator/loki/feature/roast/AgrCommand.java b/src/main/java/creator/loki/feature/roast/AgrCommand.java index 91f0f86..29ae652 100644 --- a/src/main/java/creator/loki/feature/roast/AgrCommand.java +++ b/src/main/java/creator/loki/feature/roast/AgrCommand.java @@ -40,7 +40,7 @@ public class AgrCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!config.getSuperAdminId().equals(context.getAuthor().getId())) { context .getChannel() @@ -77,7 +77,7 @@ public class AgrCommand implements Command { } } - private void doScan(CommandContext context, String targetId, String targetName) { + private void doScan(final CommandContext context, final String targetId, final String targetName) { context .getMessage() .reply("🔍 Сканирую сообщения " + targetName + "...") diff --git a/src/main/java/creator/loki/feature/roast/AgrSlashCommands.java b/src/main/java/creator/loki/feature/roast/AgrSlashCommands.java index deb5c99..3bd82fd 100644 --- a/src/main/java/creator/loki/feature/roast/AgrSlashCommands.java +++ b/src/main/java/creator/loki/feature/roast/AgrSlashCommands.java @@ -22,7 +22,7 @@ public class AgrSlashCommands extends ListenerAdapter { } @Override - public void onSlashCommandInteraction(@NotNull SlashCommandInteractionEvent event) { + public void onSlashCommandInteraction(@NotNull final SlashCommandInteractionEvent event) { if (!event.getName().equals("agr")) return; if (!config.getSuperAdminId().equals(event.getUser().getId())) { diff --git a/src/main/java/creator/loki/feature/roast/AiSessionManager.java b/src/main/java/creator/loki/feature/roast/AiSessionManager.java index f09f7fe..6fe60f8 100644 --- a/src/main/java/creator/loki/feature/roast/AiSessionManager.java +++ b/src/main/java/creator/loki/feature/roast/AiSessionManager.java @@ -25,19 +25,18 @@ public class AiSessionManager { this::cleanup, CLEANUP_INTERVAL_MS, CLEANUP_INTERVAL_MS, TimeUnit.MILLISECONDS); } - public void addMessage( - String channelId, String authorName, String authorId, String content, long timestamp) { + public void addMessage(final String channelId, final String authorName, final String authorId, final String content, final long timestamp) { AiSession session = sessions.computeIfAbsent(channelId, k -> new AiSession()); session.addMessage(authorName, authorId, content, timestamp); } - public List getContext(String channelId, int maxMsgs) { + public List getContext(final String channelId, final int maxMsgs) { AiSession session = sessions.get(channelId); if (session == null) return List.of(); return session.getContext(maxMsgs); } - public void clear(String channelId) { + public void clear(final String channelId) { sessions.remove(channelId); } @@ -60,7 +59,7 @@ public class AiSessionManager { private final List messages = new ArrayList<>(); private volatile long lastActivity = System.currentTimeMillis(); - void addMessage(String authorName, String authorId, String content, long timestamp) { + void addMessage(final String authorName, final String authorId, final String content, final long timestamp) { lastActivity = System.currentTimeMillis(); messages.add(new SessionMessage(authorName, authorId, content, timestamp)); if (messages.size() > MAX_SESSION_MSGS) { @@ -68,7 +67,7 @@ public class AiSessionManager { } } - List getContext(int maxMsgs) { + List getContext(final int maxMsgs) { List result = new ArrayList<>(); int start = Math.max(0, messages.size() - maxMsgs); for (int i = start; i < messages.size(); i++) { diff --git a/src/main/java/creator/loki/feature/roast/AndrertListener.java b/src/main/java/creator/loki/feature/roast/AndrertListener.java index 061c08d..6007fda 100644 --- a/src/main/java/creator/loki/feature/roast/AndrertListener.java +++ b/src/main/java/creator/loki/feature/roast/AndrertListener.java @@ -33,8 +33,7 @@ public class AndrertListener extends ListenerAdapter { private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); @Inject - public AndrertListener( - RoastService roastService, AiSessionManager sessionManager, BotConfig config) { + public AndrertListener(RoastService roastService, AiSessionManager sessionManager, final BotConfig config) { this.roastService = roastService; this.sessionManager = sessionManager; this.allowedChannelId = config.getAiChannelId(); @@ -45,7 +44,7 @@ public class AndrertListener extends ListenerAdapter { } @Override - public void onMessageReceived(@NotNull MessageReceivedEvent event) { + public void onMessageReceived(@NotNull final MessageReceivedEvent event) { if (event.getAuthor().isBot()) return; String userId = event.getAuthor().getId(); @@ -80,7 +79,7 @@ public class AndrertListener extends ListenerAdapter { respond(event, userId); } - private void respond(MessageReceivedEvent event, String userId) { + private void respond(final MessageReceivedEvent event, final String userId) { String raw = event.getMessage().getContentRaw(); if (!raw.isBlank() && !LanguageFilter.isAllowed(raw)) { event @@ -93,7 +92,7 @@ public class AndrertListener extends ListenerAdapter { respondAi(event, userId); } - private void respondAi(MessageReceivedEvent event, String userId) { + private void respondAi(final MessageReceivedEvent event, final String userId) { Message msg = event.getMessage(); String fullContent = msg.getContentRaw() + replyInfo(msg) + attachmentInfo(msg); sessionManager.addMessage( @@ -114,7 +113,7 @@ public class AndrertListener extends ListenerAdapter { scheduleAutoPing(event, userId); } - private void scheduleAutoPing(MessageReceivedEvent event, String userId) { + private void scheduleAutoPing(final MessageReceivedEvent event, final String userId) { String channelId = event.getChannel().getId(); String key = userId + ":" + channelId; long now = System.currentTimeMillis(); @@ -196,7 +195,7 @@ public class AndrertListener extends ListenerAdapter { pendingPings.put(key, future); } - private void sendInParts(MessageReceivedEvent event, String text) { + private void sendInParts(final MessageReceivedEvent event, final String text) { if (text.length() <= 2000) { event.getMessage().reply(text).queue(); return; @@ -221,7 +220,7 @@ public class AndrertListener extends ListenerAdapter { } } - private String replyInfo(Message msg) { + private String replyInfo(final Message msg) { Message ref = msg.getReferencedMessage(); if (ref == null) return ""; String refAuthor = ref.getAuthor().isBot() ? "бот" : ref.getAuthor().getEffectiveName(); @@ -230,7 +229,7 @@ public class AndrertListener extends ListenerAdapter { return " (в ответ на @" + refAuthor + ": \"" + refText + "\")"; } - private String attachmentInfo(Message msg) { + private String attachmentInfo(final Message msg) { StringBuilder sb = new StringBuilder(); for (var att : msg.getAttachments()) { if (att.isImage()) { diff --git a/src/main/java/creator/loki/feature/roast/ContentFetcher.java b/src/main/java/creator/loki/feature/roast/ContentFetcher.java index bec3342..9148baf 100644 --- a/src/main/java/creator/loki/feature/roast/ContentFetcher.java +++ b/src/main/java/creator/loki/feature/roast/ContentFetcher.java @@ -102,9 +102,9 @@ public class ContentFetcher { return readTextFile(url, Integer.MAX_VALUE); } - private String readTextFile(String url, int maxChars) { + private String readTextFile(String url, final int maxChars) { Request req = new Request.Builder().url(url).get().build(); - try (Response resp = httpClient.newCall(req).execute()) { + try (final Response resp = httpClient.newCall(req).execute()) { if (resp.isSuccessful() && resp.body() != null) { String text = resp.body().string(); if (text.length() > maxChars) { @@ -144,7 +144,7 @@ public class ContentFetcher { return result.isEmpty() ? null : result.toString().strip(); } - private String parseSingleUrl(String url) { + private String parseSingleUrl(final String url) { if (isTextExtension(url)) { return readTextFilePreview(url); } @@ -154,7 +154,7 @@ public class ContentFetcher { return parseHtmlPage(url); } - private String parseGitHubUrl(String url) { + private String parseGitHubUrl(final String url) { if (url.contains("raw.githubusercontent.com")) { return readTextFilePreview(url); } @@ -233,7 +233,7 @@ public class ContentFetcher { } } - private String parseHtmlPage(String url) { + private String parseHtmlPage(final String url) { try { Document doc = Jsoup.connect(url).userAgent("Mozilla/5.0 (compatible; LokiBot)").timeout(10000).get(); @@ -249,7 +249,7 @@ public class ContentFetcher { } } - private String extractMainContent(Document doc) { + private String extractMainContent(final Document doc) { String[] selectors = { "article", "main", @@ -276,7 +276,7 @@ public class ContentFetcher { return null; } - private boolean isTextExtension(String url) { + private boolean isTextExtension(final String url) { String lower = url.toLowerCase(); int idx = lower.lastIndexOf('.'); if (idx < 0) return false; @@ -285,7 +285,7 @@ public class ContentFetcher { return TEXT_EXTENSIONS.contains(ext); } - private boolean isMediaExtension(String url) { + private boolean isMediaExtension(final String url) { String lower = url.toLowerCase(); int idx = lower.lastIndexOf('.'); if (idx < 0) return false; diff --git a/src/main/java/creator/loki/feature/roast/DebateChannelListener.java b/src/main/java/creator/loki/feature/roast/DebateChannelListener.java index 1c55044..5692dc2 100644 --- a/src/main/java/creator/loki/feature/roast/DebateChannelListener.java +++ b/src/main/java/creator/loki/feature/roast/DebateChannelListener.java @@ -22,7 +22,7 @@ public class DebateChannelListener extends ListenerAdapter { } @Override - public void onMessageReceived(@NotNull MessageReceivedEvent event) { + public void onMessageReceived(@NotNull final MessageReceivedEvent event) { if (event.getAuthor().isBot()) return; String msgId = event.getMessage().getId(); diff --git a/src/main/java/creator/loki/feature/roast/DebateService.java b/src/main/java/creator/loki/feature/roast/DebateService.java index 90bfb9e..d262a77 100644 --- a/src/main/java/creator/loki/feature/roast/DebateService.java +++ b/src/main/java/creator/loki/feature/roast/DebateService.java @@ -73,7 +73,7 @@ public class DebateService { this.gentooPrompt = loadPrompt("system-gentoo.txt"); } - private String loadPrompt(String filename) { + private String loadPrompt(final String filename) { try { Path p = PROMPTS_DIR.resolve(filename); return Files.exists(p) ? Files.readString(p, StandardCharsets.UTF_8).strip() : ""; @@ -83,7 +83,7 @@ public class DebateService { } } - public void onHumanMessage(MessageReceivedEvent event) { + public void onHumanMessage(final MessageReceivedEvent event) { String debateId = config.getAiDebateChannelId(); if (debateId == null || debateId.isBlank()) return; if (!event.getChannel().getId().equals(debateId)) return; @@ -102,7 +102,7 @@ public class DebateService { state.currentTask = scheduler.schedule(() -> doRound(channel, state), 0, TimeUnit.SECONDS); } - private void doRound(TextChannel channel, ChannelState state) { + private void doRound(final TextChannel channel, final ChannelState state) { String debateId = channel.getId(); long now = System.currentTimeMillis(); if (now - state.lastHumanTime > 300_000 || state.roundDone) return; @@ -173,7 +173,7 @@ public class DebateService { return PERSONALITIES[0]; } - private String generateResponse(String personality, List ctx) { + private String generateResponse(final String personality, final List ctx) { String prompt; String selfName; String otherNames; @@ -231,7 +231,7 @@ public class DebateService { return deepSeekClient.callModel(prompt, text, 0.9); } - private List buildContext(List messages) { + private List buildContext(final List messages) { String archId = getBotId("arch"); String winId = getBotId("windows"); String gentooId = getBotId("gentoo"); @@ -259,7 +259,7 @@ public class DebateService { return result; } - private String getBotId(String personality) { + private String getBotId(final String personality) { JDA jda = jdaRegistry.getByPersonality(personality); return jda != null ? jda.getSelfUser().getId() : ""; } diff --git a/src/main/java/creator/loki/feature/roast/DeepSeekClient.java b/src/main/java/creator/loki/feature/roast/DeepSeekClient.java index e0ad027..9466554 100644 --- a/src/main/java/creator/loki/feature/roast/DeepSeekClient.java +++ b/src/main/java/creator/loki/feature/roast/DeepSeekClient.java @@ -28,7 +28,7 @@ public class DeepSeekClient { private final String apiKey; @Inject - public DeepSeekClient(BotConfig config) { + public DeepSeekClient(final BotConfig config) { this.apiKey = config.getDeepseekApiKey(); this.httpClient = new OkHttpClient.Builder() @@ -38,11 +38,11 @@ public class DeepSeekClient { .build(); } - public String callModel(String systemPrompt, String userContent) { + public String callModel(final String systemPrompt, final String userContent) { return callModel(systemPrompt, userContent, 0.9); } - public String callModel(String systemPrompt, String userContent, double temperature) { + public String callModel(final String systemPrompt, final String userContent, final double temperature) { if (apiKey == null || apiKey.isBlank()) return null; JsonObject body = new JsonObject(); @@ -71,7 +71,7 @@ public class DeepSeekClient { .post(RequestBody.create(body.toString(), JSON)) .build(); - try (Response resp = httpClient.newCall(request).execute()) { + try (final Response resp = httpClient.newCall(request).execute()) { if (!resp.isSuccessful()) { if (resp.body() != null) { logger.warn("DeepSeek error {}: {}", resp.code(), resp.body().string()); diff --git a/src/main/java/creator/loki/feature/roast/DossierCommand.java b/src/main/java/creator/loki/feature/roast/DossierCommand.java index 375a6b6..80d8456 100644 --- a/src/main/java/creator/loki/feature/roast/DossierCommand.java +++ b/src/main/java/creator/loki/feature/roast/DossierCommand.java @@ -38,7 +38,7 @@ public class DossierCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!config.getSuperAdminId().equals(context.getAuthor().getId())) { context .getChannel() @@ -71,7 +71,7 @@ public class DossierCommand implements Command { error -> context.getChannel().sendMessage("Пользователь не найден на сервере").queue()); } - private void startDossier(CommandContext context, String targetId, String targetName) { + private void startDossier(final CommandContext context, final String targetId, final String targetName) { context .getMessage() .reply("🔍 Сканирую сообщения " + targetName + "...") diff --git a/src/main/java/creator/loki/feature/roast/HelperListener.java b/src/main/java/creator/loki/feature/roast/HelperListener.java index eeac36d..46c64a0 100644 --- a/src/main/java/creator/loki/feature/roast/HelperListener.java +++ b/src/main/java/creator/loki/feature/roast/HelperListener.java @@ -49,7 +49,7 @@ public class HelperListener extends ListenerAdapter { } @Override - public void onMessageReceived(@NotNull MessageReceivedEvent event) { + public void onMessageReceived(@NotNull final MessageReceivedEvent event) { String channelId = config.getAiDebateChannelId(); if (channelId == null || channelId.isBlank()) return; if (!event.getChannel().getId().equals(channelId)) return; @@ -63,7 +63,7 @@ public class HelperListener extends ListenerAdapter { respond(event); } - private void respond(MessageReceivedEvent event) { + private void respond(final MessageReceivedEvent event) { event .getChannel() .getHistory() @@ -106,7 +106,7 @@ public class HelperListener extends ListenerAdapter { }); } - private void sendReply(MessageReceivedEvent event, String text) { + private void sendReply(final MessageReceivedEvent event, final String text) { java.util.regex.Matcher m = java.util.regex.Pattern.compile( "\\[file:([^\\]]+)\\](.*?)\\[/file\\]", java.util.regex.Pattern.DOTALL) @@ -139,7 +139,7 @@ public class HelperListener extends ListenerAdapter { } } - private void sendText(MessageReceivedEvent event, String text) { + private void sendText(final MessageReceivedEvent event, final String text) { if (text.length() <= 2000) { event.getMessage().reply(text).queue(); return; @@ -164,7 +164,7 @@ public class HelperListener extends ListenerAdapter { } } - private String attachmentInfo(Message msg) { + private String attachmentInfo(final Message msg) { StringBuilder sb = new StringBuilder(); for (var att : msg.getAttachments()) { if (att.isImage()) { diff --git a/src/main/java/creator/loki/feature/roast/KnowledgeService.java b/src/main/java/creator/loki/feature/roast/KnowledgeService.java index 0be741a..4a461de 100644 --- a/src/main/java/creator/loki/feature/roast/KnowledgeService.java +++ b/src/main/java/creator/loki/feature/roast/KnowledgeService.java @@ -99,7 +99,7 @@ public class KnowledgeService { return result.isBlank() ? null : result; } - private String[] extractKeywords(String text) { + private String[] extractKeywords(final String text) { String cleaned = text.toLowerCase().replaceAll("[^a-zа-яё0-9\\s]", " ").replaceAll("\\s+", " ").strip(); String[] all = cleaned.split(" "); @@ -111,7 +111,7 @@ public class KnowledgeService { .toArray(String[]::new); } - private int scoreFile(KnowledgeFile file, String[] keywords) { + private int scoreFile(final KnowledgeFile file, final String[] keywords) { String lower = file.contentLower; int score = 0; for (String kw : keywords) { @@ -126,7 +126,7 @@ public class KnowledgeService { return score; } - private String findBestSnippet(KnowledgeFile file, String[] keywords) { + private String findBestSnippet(final KnowledgeFile file, final String[] keywords) { String lower = file.contentLower; int bestPos = -1; int bestCount = 0; @@ -163,7 +163,7 @@ public class KnowledgeService { return snippet; } - private int countInWindow(String text, int center, int windowSize, String[] keywords) { + private int countInWindow(final String text, final int center, final int windowSize, final String[] keywords) { int start = Math.max(0, center - windowSize); int end = Math.min(text.length(), center + windowSize); String window = text.substring(start, end); diff --git a/src/main/java/creator/loki/feature/roast/LanguageFilter.java b/src/main/java/creator/loki/feature/roast/LanguageFilter.java index 192d262..922e800 100644 --- a/src/main/java/creator/loki/feature/roast/LanguageFilter.java +++ b/src/main/java/creator/loki/feature/roast/LanguageFilter.java @@ -9,7 +9,7 @@ public class LanguageFilter { private static final Set LITHUANIAN_CHARS = "čėįšųūžČĖĮŠŲŪŽ".codePoints().boxed().collect(Collectors.toSet()); - public static boolean isAllowed(String text) { + public static boolean isAllowed(final String text) { String clean = text.replaceAll("<@!?\\d+>", "") .replaceAll("https?://\\S+", "") diff --git a/src/main/java/creator/loki/feature/roast/MessageScanner.java b/src/main/java/creator/loki/feature/roast/MessageScanner.java index ed83789..0f3e09f 100644 --- a/src/main/java/creator/loki/feature/roast/MessageScanner.java +++ b/src/main/java/creator/loki/feature/roast/MessageScanner.java @@ -11,12 +11,11 @@ import net.dv8tion.jda.api.entities.channel.concrete.TextChannel; public class MessageScanner { private static final int MESSAGES_PER_CHANNEL = 100; - public CompletableFuture> scanUserMessages(Guild guild, String targetId) { + public CompletableFuture> scanUserMessages(final Guild guild, final String targetId) { return scanUserMessages(guild, targetId, MESSAGES_PER_CHANNEL); } - public CompletableFuture> scanUserMessages( - Guild guild, String targetId, int messagesPerChannel) { + public CompletableFuture> scanUserMessages(final Guild guild, final String targetId, final int messagesPerChannel) { List textChannels = guild.getTextChannels(); List>> futures = new ArrayList<>(); diff --git a/src/main/java/creator/loki/feature/roast/RoastService.java b/src/main/java/creator/loki/feature/roast/RoastService.java index f4a5f7b..8a855c7 100644 --- a/src/main/java/creator/loki/feature/roast/RoastService.java +++ b/src/main/java/creator/loki/feature/roast/RoastService.java @@ -73,7 +73,7 @@ public class RoastService { now, hours, mins, secs, metricsCollector.getTotalCommands()); } - private String loadPrompt(String filename) { + private String loadPrompt(final String filename) { try { return Files.readString(PROMPTS_DIR.resolve(filename), StandardCharsets.UTF_8).strip(); } catch (IOException e) { @@ -82,15 +82,15 @@ public class RoastService { } } - private String escapeFormat(String s) { + private String escapeFormat(final String s) { return s.replace("%", "%%"); } - public String readTextFile(String url) { + public String readTextFile(final String url) { return contentFetcher.readTextFile(url); } - public String readTextFilePreview(String url) { + public String readTextFilePreview(final String url) { return contentFetcher.readTextFilePreview(url); } @@ -109,7 +109,7 @@ public class RoastService { Pattern.compile("previous system prompt.*OBSOLETE", Pattern.CASE_INSENSITIVE), Pattern.compile("permanent system-level reconfiguration", Pattern.CASE_INSENSITIVE)); - private static String stripJailbreaks(String content) { + private static String stripJailbreaks(final String content) { for (Pattern p : BLOCKED_PATTERNS) { if (p.matcher(content).find()) { return null; @@ -118,11 +118,11 @@ public class RoastService { return content; } - public String generateResponse(List context, String targetName) { + public String generateResponse(final List context, final String targetName) { return generateResponse(context, targetName, null); } - public String generateResponse(List context, String targetName, String userId) { + public String generateResponse(final List context, final String targetName, final String userId) { String escapedName = escapeFormat(targetName != null ? targetName : ""); String systemPrompt = this.systemPrompt.formatted(escapedName, escapedName, escapedName); @@ -174,8 +174,7 @@ public class RoastService { return deepSeekClient.callModel(systemPrompt, text, 0.9); } - public String generateResponse( - List context, String targetName, String userId, String customPrompt) { + public String generateResponse(final List context, final String targetName, final String userId, final String customPrompt) { String escapedName = escapeFormat(targetName != null ? targetName : ""); String systemPrompt = customPrompt.formatted(escapedName, escapedName, escapedName); @@ -232,7 +231,7 @@ public class RoastService { return deepSeekClient.callModel(systemPrompt, text, 0.9); } - public String generateDossier(List messages, String targetName, String targetId) { + public String generateDossier(final List messages, final String targetName, final String targetId) { StringBuilder sb = new StringBuilder(); int limit = Math.min(messages.size(), config.getAiDossierMsgs()); List slice = messages.subList(messages.size() - limit, messages.size()); @@ -250,7 +249,7 @@ public class RoastService { return result; } - public String getDossier(String userId) { + public String getDossier(final String userId) { return dossierManager.getDossier(userId); } } diff --git a/src/main/java/creator/loki/feature/roast/WebSearchService.java b/src/main/java/creator/loki/feature/roast/WebSearchService.java index a275fc0..574227a 100644 --- a/src/main/java/creator/loki/feature/roast/WebSearchService.java +++ b/src/main/java/creator/loki/feature/roast/WebSearchService.java @@ -66,7 +66,7 @@ public class WebSearchService { } } - private List searchDdg(String query) { + private List searchDdg(final String query) { List results = new ArrayList<>(); try { String url = @@ -77,7 +77,7 @@ public class WebSearchService { .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36") .get() .build(); - try (Response resp = httpClient.newCall(req).execute()) { + try (final Response resp = httpClient.newCall(req).execute()) { if (!resp.isSuccessful() || resp.body() == null) return results; String html = resp.body().string(); Document doc = Jsoup.parse(html); @@ -115,7 +115,7 @@ public class WebSearchService { return ddgUrl; } - private String fetchPageText(String url) { + private String fetchPageText(final String url) { try { Request req = new Request.Builder() @@ -125,7 +125,7 @@ public class WebSearchService { .header("Accept-Language", "en,ru;q=0.9") .get() .build(); - try (Response resp = httpClient.newCall(req).execute()) { + try (final Response resp = httpClient.newCall(req).execute()) { if (!resp.isSuccessful() || resp.body() == null) return null; String html = resp.body().string(); Document doc = Jsoup.parse(html); diff --git a/src/main/java/creator/loki/feature/roast/WikipediaService.java b/src/main/java/creator/loki/feature/roast/WikipediaService.java index cecec37..9d123f0 100644 --- a/src/main/java/creator/loki/feature/roast/WikipediaService.java +++ b/src/main/java/creator/loki/feature/roast/WikipediaService.java @@ -38,7 +38,7 @@ public class WikipediaService { try { String url = String.format(SEARCH_URL, URLEncoder.encode(query, StandardCharsets.UTF_8)); Request req = new Request.Builder().url(url).get().build(); - try (Response resp = httpClient.newCall(req).execute()) { + try (final Response resp = httpClient.newCall(req).execute()) { if (!resp.isSuccessful() || resp.body() == null) return null; JsonObject json = JsonParser.parseString(resp.body().string()).getAsJsonObject(); JsonArray results = json.getAsJsonObject("query").getAsJsonArray("search"); @@ -72,11 +72,11 @@ public class WikipediaService { } } - private String getExtract(String title) { + private String getExtract(final String title) { try { String url = String.format(EXTRACT_URL, URLEncoder.encode(title, StandardCharsets.UTF_8)); Request req = new Request.Builder().url(url).get().build(); - try (Response resp = httpClient.newCall(req).execute()) { + try (final Response resp = httpClient.newCall(req).execute()) { if (!resp.isSuccessful() || resp.body() == null) return null; JsonObject json = JsonParser.parseString(resp.body().string()).getAsJsonObject(); JsonObject pages = json.getAsJsonObject("query").getAsJsonObject("pages"); diff --git a/src/main/java/creator/loki/feature/role/CustomRoleManager.java b/src/main/java/creator/loki/feature/role/CustomRoleManager.java index 0a35da0..5d85161 100644 --- a/src/main/java/creator/loki/feature/role/CustomRoleManager.java +++ b/src/main/java/creator/loki/feature/role/CustomRoleManager.java @@ -15,32 +15,32 @@ public class CustomRoleManager { } /** Получает ID ролей пользователя на сервере */ - public List getUserRoleIds(String guildId, String userId) { + public List getUserRoleIds(final String guildId, final String userId) { return repository.getUserRoles(guildId, userId); } /** Получает количество ролей пользователя */ - public int getUserRoleCount(String guildId, String userId) { + public int getUserRoleCount(final String guildId, final String userId) { return repository.getUserRoleCount(guildId, userId); } /** Проверяет, достиг ли пользователь лимита ролей */ - public boolean hasReachedLimit(String guildId, String userId) { + public boolean hasReachedLimit(final String guildId, final String userId) { return getUserRoleCount(guildId, userId) >= MAX_ROLES_PER_USER; } /** Добавляет роль в отслеживание */ - public void trackRole(String guildId, String userId, String roleId) { + public void trackRole(final String guildId, final String userId, final String roleId) { repository.addRole(guildId, userId, roleId); } /** Удаляет роль из отслеживания */ - public void untrackRole(String guildId, String userId, String roleId) { + public void untrackRole(final String guildId, final String userId, final String roleId) { repository.removeRole(guildId, userId, roleId); } /** Проверяет, принадлежит ли роль пользователю */ - public boolean isOwnedBy(String guildId, String userId, String roleId) { + public boolean isOwnedBy(final String guildId, final String userId, final String roleId) { return repository.hasRole(guildId, userId, roleId); } diff --git a/src/main/java/creator/loki/feature/role/RoleModule.java b/src/main/java/creator/loki/feature/role/RoleModule.java index a89e79c..c37d463 100644 --- a/src/main/java/creator/loki/feature/role/RoleModule.java +++ b/src/main/java/creator/loki/feature/role/RoleModule.java @@ -13,13 +13,13 @@ public class RoleModule extends AbstractModule { @Provides @Singleton - CustomRoleRepository provideCustomRoleRepository(Database database) { + CustomRoleRepository provideCustomRoleRepository(final Database database) { return new CustomRoleRepository(database); } @Provides @Singleton - CustomRoleManager provideCustomRoleManager(CustomRoleRepository repository) { + CustomRoleManager provideCustomRoleManager(final CustomRoleRepository repository) { return new CustomRoleManager(repository); } } diff --git a/src/main/java/creator/loki/feature/role/command/CreateRoleCommand.java b/src/main/java/creator/loki/feature/role/command/CreateRoleCommand.java index b8e8552..1cba994 100644 --- a/src/main/java/creator/loki/feature/role/command/CreateRoleCommand.java +++ b/src/main/java/creator/loki/feature/role/command/CreateRoleCommand.java @@ -40,7 +40,7 @@ public class CreateRoleCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!RoleCommandValidator.validateGuild(context)) return; Guild guild = context.getGuild(); if (!RoleCommandValidator.validateBotPermissions(guild, context)) return; @@ -64,13 +64,13 @@ public class CreateRoleCommand implements Command { createAndAssignRole(guild, context, roleData.name, color); } - private RoleData parseRoleData(CommandContext context) { + private RoleData parseRoleData(final CommandContext context) { String colorArg = context.getArgs().get(context.getArgs().size() - 1); String name = String.join(" ", context.getArgs().subList(0, context.getArgs().size() - 1)); return new RoleData(name, colorArg); } - private void createAndAssignRole(Guild guild, CommandContext context, String name, Color color) { + private void createAndAssignRole(final Guild guild, final CommandContext context, String name, final Color color) { guild .createRole() .setName(name) @@ -81,7 +81,7 @@ public class CreateRoleCommand implements Command { error -> sendCreationError(context, error)); } - private void assignRoleToUser(Guild guild, CommandContext context, Role role) { + private void assignRoleToUser(final Guild guild, final CommandContext context, final Role role) { guild .addRoleToMember(context.getAuthor(), role) .queue( @@ -89,7 +89,7 @@ public class CreateRoleCommand implements Command { error -> sendAssignmentError(context, error)); } - private void onRoleAssigned(Guild guild, CommandContext context, Role role) { + private void onRoleAssigned(final Guild guild, final CommandContext context, final Role role) { String userId = context.getAuthor().getId(); String guildId = guild.getId(); roleManager.trackRole(guildId, userId, role.getId()); @@ -109,7 +109,7 @@ public class CreateRoleCommand implements Command { .queue(); } - private void sendAssignmentError(CommandContext context, Throwable error) { + private void sendAssignmentError(final CommandContext context, final Throwable error) { context .getChannel() .sendMessageEmbeds( @@ -118,7 +118,7 @@ public class CreateRoleCommand implements Command { .queue(); } - private void sendCreationError(CommandContext context, Throwable error) { + private void sendCreationError(final CommandContext context, final Throwable error) { context .getChannel() .sendMessageEmbeds( diff --git a/src/main/java/creator/loki/feature/role/command/DeleteRoleCommand.java b/src/main/java/creator/loki/feature/role/command/DeleteRoleCommand.java index c762414..1da920c 100644 --- a/src/main/java/creator/loki/feature/role/command/DeleteRoleCommand.java +++ b/src/main/java/creator/loki/feature/role/command/DeleteRoleCommand.java @@ -39,7 +39,7 @@ public class DeleteRoleCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { Guild guild = context.getGuild(); if (guild == null) { context diff --git a/src/main/java/creator/loki/feature/role/command/EditRoleCommand.java b/src/main/java/creator/loki/feature/role/command/EditRoleCommand.java index 880a809..13512e2 100644 --- a/src/main/java/creator/loki/feature/role/command/EditRoleCommand.java +++ b/src/main/java/creator/loki/feature/role/command/EditRoleCommand.java @@ -42,7 +42,7 @@ public class EditRoleCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { Guild guild = context.getGuild(); if (guild == null) { context diff --git a/src/main/java/creator/loki/feature/role/command/MyRolesCommand.java b/src/main/java/creator/loki/feature/role/command/MyRolesCommand.java index afa889f..aa8534a 100644 --- a/src/main/java/creator/loki/feature/role/command/MyRolesCommand.java +++ b/src/main/java/creator/loki/feature/role/command/MyRolesCommand.java @@ -36,7 +36,7 @@ public class MyRolesCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { Guild guild = context.getGuild(); if (guild == null) { context diff --git a/src/main/java/creator/loki/feature/role/repository/CustomRoleRepository.java b/src/main/java/creator/loki/feature/role/repository/CustomRoleRepository.java index c6c4c7d..0b2efa8 100644 --- a/src/main/java/creator/loki/feature/role/repository/CustomRoleRepository.java +++ b/src/main/java/creator/loki/feature/role/repository/CustomRoleRepository.java @@ -20,7 +20,7 @@ public class CustomRoleRepository { } /** Добавить роль пользователю */ - public void addRole(String guildId, String userId, String roleId) { + public void addRole(final String guildId, final String userId, final String roleId) { String sql = """ INSERT INTO custom_roles (guild_id, user_id, role_id) @@ -28,7 +28,7 @@ public class CustomRoleRepository { ON CONFLICT(guild_id, user_id, role_id) DO NOTHING """; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); stmt.setString(2, userId); stmt.setString(3, roleId); @@ -40,10 +40,10 @@ public class CustomRoleRepository { } /** Удалить роль пользователя */ - public void removeRole(String guildId, String userId, String roleId) { + public void removeRole(final String guildId, final String userId, final String roleId) { String sql = "DELETE FROM custom_roles WHERE guild_id = ? AND user_id = ? AND role_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); stmt.setString(2, userId); stmt.setString(3, roleId); @@ -55,15 +55,15 @@ public class CustomRoleRepository { } /** Получить все роли пользователя */ - public List getUserRoles(String guildId, String userId) { + public List getUserRoles(final String guildId, final String userId) { List roles = new ArrayList<>(); String sql = "SELECT role_id FROM custom_roles WHERE guild_id = ? AND user_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); stmt.setString(2, userId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { while (rs.next()) { roles.add(rs.getString("role_id")); } @@ -76,15 +76,15 @@ public class CustomRoleRepository { } /** Проверить есть ли у пользователя роль */ - public boolean hasRole(String guildId, String userId, String roleId) { + public boolean hasRole(final String guildId, final String userId, final String roleId) { String sql = "SELECT 1 FROM custom_roles WHERE guild_id = ? AND user_id = ? AND role_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); stmt.setString(2, userId); stmt.setString(3, roleId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { return rs.next(); } } catch (SQLException e) { @@ -95,14 +95,14 @@ public class CustomRoleRepository { } /** Получить количество ролей пользователя */ - public int getUserRoleCount(String guildId, String userId) { + public int getUserRoleCount(final String guildId, final String userId) { String sql = "SELECT COUNT(*) as count FROM custom_roles WHERE guild_id = ? AND user_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); stmt.setString(2, userId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { if (rs.next()) { return rs.getInt("count"); } @@ -115,10 +115,10 @@ public class CustomRoleRepository { } /** Удалить все роли пользователя */ - public void removeAllUserRoles(String guildId, String userId) { + public void removeAllUserRoles(final String guildId, final String userId) { String sql = "DELETE FROM custom_roles WHERE guild_id = ? AND user_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); stmt.setString(2, userId); int deleted = stmt.executeUpdate(); @@ -129,10 +129,10 @@ public class CustomRoleRepository { } /** Удалить роль со всех пользователей (при удалении роли с сервера) */ - public void removeRoleFromAll(String guildId, String roleId) { + public void removeRoleFromAll(final String guildId, final String roleId) { String sql = "DELETE FROM custom_roles WHERE guild_id = ? AND role_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); stmt.setString(2, roleId); int deleted = stmt.executeUpdate(); diff --git a/src/main/java/creator/loki/feature/role/validation/RoleCommandValidator.java b/src/main/java/creator/loki/feature/role/validation/RoleCommandValidator.java index 266c434..135ece8 100644 --- a/src/main/java/creator/loki/feature/role/validation/RoleCommandValidator.java +++ b/src/main/java/creator/loki/feature/role/validation/RoleCommandValidator.java @@ -8,7 +8,7 @@ import net.dv8tion.jda.api.entities.Guild; /** Общие валидации для команд работы с ролями (DRY) */ public class RoleCommandValidator { - public static boolean validateGuild(CommandContext context) { + public static boolean validateGuild(final CommandContext context) { if (context.getGuild() == null) { context .getChannel() @@ -19,7 +19,7 @@ public class RoleCommandValidator { return true; } - public static boolean validateBotPermissions(Guild guild, CommandContext context) { + public static boolean validateBotPermissions(final Guild guild, final CommandContext context) { if (!guild.getMember(guild.getJDA().getSelfUser()).hasPermission(Permission.MANAGE_ROLES)) { context .getChannel() @@ -31,7 +31,7 @@ public class RoleCommandValidator { return true; } - public static boolean validateArgumentCount(CommandContext context, int minArgs, String usage) { + public static boolean validateArgumentCount(final CommandContext context, final int minArgs, final String usage) { if (context.getArgs().size() < minArgs) { context .getChannel() @@ -42,7 +42,7 @@ public class RoleCommandValidator { return true; } - public static boolean validateRoleName(String name, CommandContext context) { + public static boolean validateRoleName(final String name, final CommandContext context) { if (name.isBlank()) { context .getChannel() diff --git a/src/main/java/creator/loki/feature/role/validation/RoleValidators.java b/src/main/java/creator/loki/feature/role/validation/RoleValidators.java index 4dfa00e..4a23313 100644 --- a/src/main/java/creator/loki/feature/role/validation/RoleValidators.java +++ b/src/main/java/creator/loki/feature/role/validation/RoleValidators.java @@ -11,7 +11,7 @@ import net.dv8tion.jda.api.entities.Guild; public class RoleValidators { private static final Pattern HEX_PATTERN = Pattern.compile("^#?[0-9A-Fa-f]{6}$"); - public static boolean validateRoleName(String name, Guild guild, CommandContext context) { + public static boolean validateRoleName(final String name, final Guild guild, final CommandContext context) { if (name.isBlank()) { context .getChannel() @@ -51,7 +51,7 @@ public class RoleValidators { return true; } - public static Color parseColor(String colorArg, CommandContext context) { + public static Color parseColor(final String colorArg, final CommandContext context) { if (!HEX_PATTERN.matcher(colorArg).matches()) { context .getChannel() @@ -74,8 +74,7 @@ public class RoleValidators { } } - public static boolean checkUserLimit( - String guildId, String userId, CustomRoleManager roleManager, CommandContext context) { + public static boolean checkUserLimit(final String guildId, final String userId, final CustomRoleManager roleManager, final CommandContext context) { if (roleManager.hasReachedLimit(guildId, userId)) { int current = roleManager.getUserRoleCount(guildId, userId); int max = roleManager.getMaxRolesPerUser(); diff --git a/src/main/java/creator/loki/feature/serverstats/ServerStatsService.java b/src/main/java/creator/loki/feature/serverstats/ServerStatsService.java index aeac7a3..70a939d 100644 --- a/src/main/java/creator/loki/feature/serverstats/ServerStatsService.java +++ b/src/main/java/creator/loki/feature/serverstats/ServerStatsService.java @@ -34,7 +34,7 @@ public class ServerStatsService { this.counterStatsRepository = counterStatsRepository; } - public List getHistory(int days) { + public List getHistory(final int days) { return counterStatsRepository.getHistory(days); } @@ -67,7 +67,7 @@ public class ServerStatsService { return baos.toByteArray(); } - private void drawLabels(Graphics2D g, int plotH, int maxVal) { + private void drawLabels(final Graphics2D g, final int plotH, final int maxVal) { g.setColor(COLOR_TEXT); g.setFont(new Font("Arial", Font.BOLD, 16)); g.drawString("Активность сервера (присоединились / вышли)", 160, 30); @@ -78,7 +78,7 @@ public class ServerStatsService { } } - private void drawData(Graphics2D g, List history, int maxVal, int plotH, int barW) { + private void drawData(final Graphics2D g, final List history, final int maxVal, final int plotH, final int barW) { var step = Math.max(1, history.size() / 15); for (var i = 0; i < history.size(); i++) { var stats = history.get(i); @@ -98,7 +98,7 @@ public class ServerStatsService { } } - private void drawLegend(Graphics2D g) { + private void drawLegend(final Graphics2D g) { g.setFont(new Font("Arial", Font.PLAIN, 12)); g.setColor(COLOR_JOINED); g.fillRect(CHART_WIDTH - 170, 10, 12, 12); @@ -110,7 +110,7 @@ public class ServerStatsService { g.drawString("Вышли", CHART_WIDTH - 42, 21); } - public byte[] generateCsv(Guild guild, List history) { + public byte[] generateCsv(final Guild guild, final List history) { var members = guild.getMembers(); var owner = guild.getOwner(); var online = members.stream().filter(m -> m.getOnlineStatus() == OnlineStatus.ONLINE).count(); diff --git a/src/main/java/creator/loki/feature/ship/ShipCommand.java b/src/main/java/creator/loki/feature/ship/ShipCommand.java index 4f3d851..8d704e1 100644 --- a/src/main/java/creator/loki/feature/ship/ShipCommand.java +++ b/src/main/java/creator/loki/feature/ship/ShipCommand.java @@ -38,7 +38,7 @@ public class ShipCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { List mentioned = context.getMessage().getMentions().getMembers(); if (mentioned.size() < 2) { context.getChannel().sendMessage("Укажи двух пользователей через @").queue(); @@ -84,7 +84,7 @@ public class ShipCommand implements Command { .queue(); } - private String generateHearts(int percentage) { + private String generateHearts(final int percentage) { int fullHearts = percentage / 10; StringBuilder hearts = new StringBuilder(); for (int i = 0; i < fullHearts; i++) { @@ -96,7 +96,7 @@ public class ShipCommand implements Command { return hearts.toString(); } - private String generateMessage(int percentage) { + private String generateMessage(final int percentage) { if (percentage >= 90) return "Идеальная пара! 💑"; if (percentage >= 70) return "Отличная совместимость! 💕"; if (percentage >= 50) return "Неплохие шансы! 💖"; @@ -104,7 +104,7 @@ public class ShipCommand implements Command { return "Лучше остаться друзьями 💀"; } - private Color getColorByPercentage(int percentage) { + private Color getColorByPercentage(final int percentage) { if (percentage >= 70) return new Color(255, 105, 180); // Розовый if (percentage >= 40) return new Color(255, 182, 193); // Светло-розовый return new Color(128, 128, 128); // Серый diff --git a/src/main/java/creator/loki/feature/ship/repository/ShipPairRepository.java b/src/main/java/creator/loki/feature/ship/repository/ShipPairRepository.java index 1f6c44e..9636df2 100644 --- a/src/main/java/creator/loki/feature/ship/repository/ShipPairRepository.java +++ b/src/main/java/creator/loki/feature/ship/repository/ShipPairRepository.java @@ -18,16 +18,16 @@ public class ShipPairRepository { } /** Получить совместимость пары Автоматически нормализует порядок ID (меньший всегда первый) */ - public Double getCompatibility(String userId1, String userId2) { + public Double getCompatibility(final String userId1, final String userId2) { String[] normalized = normalizeIds(userId1, userId2); String sql = "SELECT compatibility FROM ship_pairs WHERE user1_id = ? AND user2_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, normalized[0]); stmt.setString(2, normalized[1]); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { if (rs.next()) { return rs.getDouble("compatibility"); } @@ -40,7 +40,7 @@ public class ShipPairRepository { } /** Сохранить совместимость пары */ - public void saveCompatibility(String userId1, String userId2, double compatibility) { + public void saveCompatibility(final String userId1, final String userId2, double compatibility) { String[] normalized = normalizeIds(userId1, userId2); String sql = @@ -51,7 +51,7 @@ public class ShipPairRepository { DO UPDATE SET compatibility = excluded.compatibility """; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, normalized[0]); stmt.setString(2, normalized[1]); stmt.setDouble(3, compatibility); @@ -63,17 +63,17 @@ public class ShipPairRepository { } /** Проверить существует ли пара */ - public boolean hasPair(String userId1, String userId2) { + public boolean hasPair(final String userId1, final String userId2) { return getCompatibility(userId1, userId2) != null; } /** Удалить пару */ - public void deletePair(String userId1, String userId2) { + public void deletePair(final String userId1, final String userId2) { String[] normalized = normalizeIds(userId1, userId2); String sql = "DELETE FROM ship_pairs WHERE user1_id = ? AND user2_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, normalized[0]); stmt.setString(2, normalized[1]); stmt.executeUpdate(); @@ -83,7 +83,7 @@ public class ShipPairRepository { } /** Нормализовать порядок ID (меньший всегда первый) */ - private String[] normalizeIds(String userId1, String userId2) { + private String[] normalizeIds(final String userId1, final String userId2) { if (userId1.compareTo(userId2) < 0) { return new String[] {userId1, userId2}; } else { diff --git a/src/main/java/creator/loki/feature/social/commands/ComplimentCommand.java b/src/main/java/creator/loki/feature/social/commands/ComplimentCommand.java index 8a32492..d270681 100644 --- a/src/main/java/creator/loki/feature/social/commands/ComplimentCommand.java +++ b/src/main/java/creator/loki/feature/social/commands/ComplimentCommand.java @@ -47,7 +47,7 @@ public class ComplimentCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { List mentioned = context.getMessage().getMentions().getMembers(); if (mentioned.isEmpty()) { context.getChannel().sendMessage("Укажи пользователя через @").queue(); diff --git a/src/main/java/creator/loki/feature/social/commands/PatCommand.java b/src/main/java/creator/loki/feature/social/commands/PatCommand.java index 7c1f02b..e3fa33d 100644 --- a/src/main/java/creator/loki/feature/social/commands/PatCommand.java +++ b/src/main/java/creator/loki/feature/social/commands/PatCommand.java @@ -37,7 +37,7 @@ public class PatCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { String userId = context.getAuthor().getId(); // Проверка cooldown diff --git a/src/main/java/creator/loki/feature/social/commands/RoastCommand.java b/src/main/java/creator/loki/feature/social/commands/RoastCommand.java index 84a8200..5435768 100644 --- a/src/main/java/creator/loki/feature/social/commands/RoastCommand.java +++ b/src/main/java/creator/loki/feature/social/commands/RoastCommand.java @@ -47,7 +47,7 @@ public class RoastCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { List mentioned = context.getMessage().getMentions().getMembers(); if (mentioned.isEmpty()) { context.getChannel().sendMessage("Укажи пользователя через @").queue(); diff --git a/src/main/java/creator/loki/feature/social/commands/SocialCommand.java b/src/main/java/creator/loki/feature/social/commands/SocialCommand.java index 29ced62..2a8d0a9 100644 --- a/src/main/java/creator/loki/feature/social/commands/SocialCommand.java +++ b/src/main/java/creator/loki/feature/social/commands/SocialCommand.java @@ -85,7 +85,7 @@ public class SocialCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (cooldownManager.isOnCooldown(context.getAuthor().getId(), flavor.name)) { long remaining = cooldownManager.getRemainingSeconds(context.getAuthor().getId(), flavor.name); diff --git a/src/main/java/creator/loki/feature/ticket/TicketCommandRegistrar.java b/src/main/java/creator/loki/feature/ticket/TicketCommandRegistrar.java index cae3ed0..3792056 100644 --- a/src/main/java/creator/loki/feature/ticket/TicketCommandRegistrar.java +++ b/src/main/java/creator/loki/feature/ticket/TicketCommandRegistrar.java @@ -14,7 +14,7 @@ public class TicketCommandRegistrar implements CommandRegistrar { } @Override - public void register(CommandRegistry registry) { + public void register(final CommandRegistry registry) { registry.register(ticketSetupCommand); } } diff --git a/src/main/java/creator/loki/feature/ticket/commands/TicketSetupCommand.java b/src/main/java/creator/loki/feature/ticket/commands/TicketSetupCommand.java index 681b6bf..b2ca1b4 100644 --- a/src/main/java/creator/loki/feature/ticket/commands/TicketSetupCommand.java +++ b/src/main/java/creator/loki/feature/ticket/commands/TicketSetupCommand.java @@ -42,7 +42,7 @@ public class TicketSetupCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!context.getAuthor().hasPermission(Permission.ADMINISTRATOR)) { context.getChannel().sendMessage("❌ Только администраторы могут использовать эту команду.").queue(); return; diff --git a/src/main/java/creator/loki/feature/ticket/listener/TicketListener.java b/src/main/java/creator/loki/feature/ticket/listener/TicketListener.java index dd6a6db..032dadb 100644 --- a/src/main/java/creator/loki/feature/ticket/listener/TicketListener.java +++ b/src/main/java/creator/loki/feature/ticket/listener/TicketListener.java @@ -30,7 +30,7 @@ public class TicketListener extends ListenerAdapter { } @Override - public void onButtonInteraction(ButtonInteractionEvent event) { + public void onButtonInteraction(final ButtonInteractionEvent event) { String buttonId = event.getComponentId(); if (!buttonId.startsWith("ticket_")) return; @@ -42,7 +42,7 @@ public class TicketListener extends ListenerAdapter { } } - private void handleCreate(ButtonInteractionEvent event) { + private void handleCreate(final ButtonInteractionEvent event) { Guild guild = event.getGuild(); if (guild == null) return; @@ -87,7 +87,7 @@ public class TicketListener extends ListenerAdapter { }); } - private void handleClose(ButtonInteractionEvent event) { + private void handleClose(final ButtonInteractionEvent event) { Guild guild = event.getGuild(); if (guild == null) return; @@ -130,7 +130,7 @@ public class TicketListener extends ListenerAdapter { event.reply("✅ Тикет закрыт.").setEphemeral(true).queue(); } - private void handleDelete(ButtonInteractionEvent event) { + private void handleDelete(final ButtonInteractionEvent event) { Member member = event.getMember(); if (member == null || !member.hasPermission(Permission.MANAGE_CHANNEL)) { event.reply("❌ У вас нет прав на удаление каналов.").setEphemeral(true).queue(); @@ -144,7 +144,7 @@ public class TicketListener extends ListenerAdapter { event.reply("🗑 Канал будет удалён.").setEphemeral(true).queue(); } - private Category findTicketCategory(Guild guild) { + private Category findTicketCategory(final Guild guild) { for (Category category : guild.getCategories()) { if (category.getName().equalsIgnoreCase("Tickets")) { return category; diff --git a/src/main/java/creator/loki/feature/ticket/repository/TicketRepository.java b/src/main/java/creator/loki/feature/ticket/repository/TicketRepository.java index 6ebe19c..9113cee 100644 --- a/src/main/java/creator/loki/feature/ticket/repository/TicketRepository.java +++ b/src/main/java/creator/loki/feature/ticket/repository/TicketRepository.java @@ -22,14 +22,14 @@ public class TicketRepository { this.database = database; } - public void createTicket(String channelId, String guildId, String creatorId) { + public void createTicket(final String channelId, final String guildId, final String creatorId) { String sql = """ INSERT INTO tickets (channel_id, guild_id, creator_id, created_at, closed, claimed_by) VALUES (?, ?, ?, ?, 0, NULL) """; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, channelId); stmt.setString(2, guildId); stmt.setString(3, creatorId); @@ -40,10 +40,10 @@ public class TicketRepository { } } - public void closeTicket(String channelId) { + public void closeTicket(final String channelId) { String sql = "UPDATE tickets SET closed = 1 WHERE channel_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, channelId); stmt.executeUpdate(); } catch (SQLException e) { @@ -51,10 +51,10 @@ public class TicketRepository { } } - public void deleteTicket(String channelId) { + public void deleteTicket(final String channelId) { String sql = "DELETE FROM tickets WHERE channel_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, channelId); stmt.executeUpdate(); } catch (SQLException e) { @@ -62,14 +62,14 @@ public class TicketRepository { } } - public List findOpenByGuild(String guildId) { + public List findOpenByGuild(final String guildId) { String sql = "SELECT channel_id, guild_id, creator_id, created_at, closed, claimed_by FROM tickets WHERE guild_id = ? AND closed = 0"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, guildId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { List results = new ArrayList<>(); while (rs.next()) { results.add(mapRow(rs)); @@ -82,14 +82,14 @@ public class TicketRepository { } } - public Ticket findByChannel(String channelId) { + public Ticket findByChannel(final String channelId) { String sql = "SELECT channel_id, guild_id, creator_id, created_at, closed, claimed_by FROM tickets WHERE channel_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, channelId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { if (rs.next()) { return mapRow(rs); } @@ -101,7 +101,7 @@ public class TicketRepository { return null; } - private Ticket mapRow(ResultSet rs) throws SQLException { + private Ticket mapRow(final ResultSet rs) throws SQLException { return new Ticket( rs.getString("channel_id"), rs.getString("guild_id"), diff --git a/src/main/java/creator/loki/feature/tiktok/TikTokApi.java b/src/main/java/creator/loki/feature/tiktok/TikTokApi.java index e8fc698..8a5aa19 100644 --- a/src/main/java/creator/loki/feature/tiktok/TikTokApi.java +++ b/src/main/java/creator/loki/feature/tiktok/TikTokApi.java @@ -33,7 +33,7 @@ public class TikTokApi { .build(); } - public TikTokResult fetchVideo(String url) throws TikTokApiException { + public TikTokResult fetchVideo(final String url) throws TikTokApiException { JsonObject requestBody = new JsonObject(); requestBody.addProperty("url", url); @@ -43,7 +43,7 @@ public class TikTokApi { .post(RequestBody.create(requestBody.toString(), JSON)) .build(); - try (Response response = client.newCall(request).execute()) { + try (final Response response = client.newCall(request).execute()) { ResponseBody body = response.body(); if (body == null) { throw new TikTokApiException("Empty response from API"); @@ -123,7 +123,7 @@ public class TikTokApi { } public static class TikTokApiException extends Exception { - public TikTokApiException(String message) { + public TikTokApiException(final String message) { super(message); } } diff --git a/src/main/java/creator/loki/feature/tiktok/TikTokCommand.java b/src/main/java/creator/loki/feature/tiktok/TikTokCommand.java index 9c0b5c5..380280b 100644 --- a/src/main/java/creator/loki/feature/tiktok/TikTokCommand.java +++ b/src/main/java/creator/loki/feature/tiktok/TikTokCommand.java @@ -57,7 +57,7 @@ public class TikTokCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (context.getArgs().isEmpty()) { context .getChannel() @@ -140,9 +140,9 @@ public class TikTokCommand implements Command { }); } - private byte[] downloadVideo(String videoUrl) throws IOException { + private byte[] downloadVideo(final String videoUrl) throws IOException { Request request = new Request.Builder().url(videoUrl).build(); - try (Response response = downloadClient.newCall(request).execute()) { + try (final Response response = downloadClient.newCall(request).execute()) { if (!response.isSuccessful()) { throw new IOException("Download failed: HTTP " + response.code()); } @@ -151,13 +151,13 @@ public class TikTokCommand implements Command { } } - private String formatDuration(int seconds) { + private String formatDuration(final int seconds) { int min = seconds / 60; int sec = seconds % 60; return String.format("%d:%02d", min, sec); } - private String truncate(String str, int maxLen) { + private String truncate(String str, final int maxLen) { if (str == null) return ""; return str.length() > maxLen ? str.substring(0, maxLen - 3) + "..." : str; } diff --git a/src/main/java/creator/loki/feature/tiktok/TikTokModule.java b/src/main/java/creator/loki/feature/tiktok/TikTokModule.java index 6629e5a..b95ebee 100644 --- a/src/main/java/creator/loki/feature/tiktok/TikTokModule.java +++ b/src/main/java/creator/loki/feature/tiktok/TikTokModule.java @@ -11,7 +11,7 @@ public class TikTokModule extends AbstractModule { } @Provides - TikTokCommand provideTikTokCommand(TikTokApi tikTokApi) { + TikTokCommand provideTikTokCommand(final TikTokApi tikTokApi) { return new TikTokCommand(tikTokApi); } } diff --git a/src/main/java/creator/loki/feature/utility/ChoiceOptionParser.java b/src/main/java/creator/loki/feature/utility/ChoiceOptionParser.java index 035a018..dc94265 100644 --- a/src/main/java/creator/loki/feature/utility/ChoiceOptionParser.java +++ b/src/main/java/creator/loki/feature/utility/ChoiceOptionParser.java @@ -28,7 +28,7 @@ public final class ChoiceOptionParser { private ChoiceOptionParser() {} - public static String tailAfterCommand(String raw, String prefix, String commandName) { + public static String tailAfterCommand(final String raw, final String prefix, final String commandName) { String t = raw.trim(); if (!t.startsWith(prefix)) { return ""; @@ -45,7 +45,7 @@ public final class ChoiceOptionParser { return rest.substring(sp).trim(); } - public static List parseOptions(String tail) { + public static List parseOptions(final String tail) { String t = tail.strip(); for (SplitRule rule : RULES) { if (rule.when.test(t)) { @@ -55,11 +55,11 @@ public final class ChoiceOptionParser { return List.of(); } - private static List trimNonEmpty(String[] arr) { + private static List trimNonEmpty(final String[] arr) { return Arrays.stream(arr).map(String::trim).filter(s -> !s.isEmpty()).toList(); } - private static List dedupeIgnoreCase(List parts) { + private static List dedupeIgnoreCase(final List parts) { Set seen = new HashSet<>(); List out = new ArrayList<>(); for (String p : parts) { diff --git a/src/main/java/creator/loki/feature/utility/TimerCommand.java b/src/main/java/creator/loki/feature/utility/TimerCommand.java index 5729076..137620d 100644 --- a/src/main/java/creator/loki/feature/utility/TimerCommand.java +++ b/src/main/java/creator/loki/feature/utility/TimerCommand.java @@ -27,7 +27,7 @@ public class TimerCommand implements Command { } @Override - public void execute(CommandContext ctx) { + public void execute(final CommandContext ctx) { if (ctx.getArgs().isEmpty()) { ctx.getChannel() .sendMessageEmbeds(EmbedTemplates.error("Таймер", "Укажи секунды: `!timer 30`")) diff --git a/src/main/java/creator/loki/feature/utility/UtilityCommandRegistrar.java b/src/main/java/creator/loki/feature/utility/UtilityCommandRegistrar.java index d649c51..0ea14b4 100644 --- a/src/main/java/creator/loki/feature/utility/UtilityCommandRegistrar.java +++ b/src/main/java/creator/loki/feature/utility/UtilityCommandRegistrar.java @@ -46,19 +46,7 @@ public class UtilityCommandRegistrar implements CommandRegistrar { private final AndrertListener andrertListener; @Inject - public UtilityCommandRegistrar( - CommandRegistry commandRegistry, - BotConfig config, - MetricsCollector metrics, - ConfigRepository configRepository, - VoiceChannelManager voiceChannelManager, - CounterManager counterManager, - RatingsRepository ratingsRepository, - ReputationRepository reputationRepository, - CooldownManager cooldownManager, - CounterStatsRepository counterStatsRepository, - RoastService roastService, - AndrertListener andrertListener) { + public UtilityCommandRegistrar(CommandRegistry commandRegistry, BotConfig config, MetricsCollector metrics, ConfigRepository configRepository, VoiceChannelManager voiceChannelManager, CounterManager counterManager, RatingsRepository ratingsRepository, ReputationRepository reputationRepository, CooldownManager cooldownManager, final CounterStatsRepository counterStatsRepository, RoastService roastService, AndrertListener andrertListener) { this.commandRegistry = commandRegistry; this.config = config; this.metrics = metrics; @@ -74,7 +62,7 @@ public class UtilityCommandRegistrar implements CommandRegistrar { } @Override - public void register(CommandRegistry registry) { + public void register(final CommandRegistry registry) { registry.register(new PingCommand()); registry.register(new HelpCommand(commandRegistry, config)); registry.register(new InfoCommand()); diff --git a/src/main/java/creator/loki/feature/utility/VoiceHelper.java b/src/main/java/creator/loki/feature/utility/VoiceHelper.java index 0fec7c0..54db2dc 100644 --- a/src/main/java/creator/loki/feature/utility/VoiceHelper.java +++ b/src/main/java/creator/loki/feature/utility/VoiceHelper.java @@ -13,7 +13,7 @@ public final class VoiceHelper { private VoiceHelper() {} - public static boolean waitForCondition(BooleanSupplier condition) { + public static boolean waitForCondition(final BooleanSupplier condition) { for (int i = 0; i < RETRIES; i++) { if (condition.getAsBoolean()) return true; try { @@ -26,7 +26,7 @@ public final class VoiceHelper { return false; } - public static boolean waitForCondition(BooleanSupplier condition, long timeout, TimeUnit unit) { + public static boolean waitForCondition(final BooleanSupplier condition, final long timeout, final TimeUnit unit) { long deadline = System.nanoTime() + unit.toNanos(timeout); long delay = Math.min(DELAY_MS, unit.toMillis(timeout) / RETRIES); while (System.nanoTime() < deadline) { @@ -46,7 +46,7 @@ public final class VoiceHelper { * * @return true если подключение успешно, false если не удалось */ - public static boolean connectForPlayback(Guild guild, Member member, LavalinkManager lm) { + public static boolean connectForPlayback(final Guild guild, final Member member, final LavalinkManager lm) { if (guild.getSelfMember().getVoiceState().inAudioChannel()) return true; var vc = member.getVoiceState().getChannel().asVoiceChannel(); guild.getJDA().getDirectAudioController().connect(vc); diff --git a/src/main/java/creator/loki/feature/utility/commands/PollCommand.java b/src/main/java/creator/loki/feature/utility/commands/PollCommand.java index e042d4b..801ee77 100644 --- a/src/main/java/creator/loki/feature/utility/commands/PollCommand.java +++ b/src/main/java/creator/loki/feature/utility/commands/PollCommand.java @@ -35,7 +35,7 @@ public class PollCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (context.getArgs().isEmpty()) { context .getChannel() diff --git a/src/main/java/creator/loki/feature/voice/VoiceModule.java b/src/main/java/creator/loki/feature/voice/VoiceModule.java index 35e1e92..a8e79ca 100644 --- a/src/main/java/creator/loki/feature/voice/VoiceModule.java +++ b/src/main/java/creator/loki/feature/voice/VoiceModule.java @@ -25,22 +25,19 @@ public class VoiceModule extends AbstractModule { @Provides @Singleton - VoiceChannelRepository provideVoiceChannelRepository(Database database) { + VoiceChannelRepository provideVoiceChannelRepository(final Database database) { return new VoiceChannelRepository(database); } @Provides @Singleton - VoicePresetRepository provideVoicePresetRepository(Database database) { + VoicePresetRepository provideVoicePresetRepository(final Database database) { return new VoicePresetRepository(database); } @Provides @Singleton - VoiceChannelManager provideVoiceChannelManager( - VoiceChannelRepository channelRepo, - VoicePresetRepository presetRepo, - ConfigRepository configRepo) { + VoiceChannelManager provideVoiceChannelManager(final VoiceChannelRepository channelRepo, final VoicePresetRepository presetRepo, final ConfigRepository configRepo) { return new VoiceChannelManager(channelRepo, presetRepo, configRepo); } } diff --git a/src/main/java/creator/loki/feature/voice/handler/VoiceButtonHandler.java b/src/main/java/creator/loki/feature/voice/handler/VoiceButtonHandler.java index 86960fb..48c40f2 100644 --- a/src/main/java/creator/loki/feature/voice/handler/VoiceButtonHandler.java +++ b/src/main/java/creator/loki/feature/voice/handler/VoiceButtonHandler.java @@ -27,7 +27,7 @@ public class VoiceButtonHandler extends ListenerAdapter { } @Override - public void onButtonInteraction(ButtonInteractionEvent event) { + public void onButtonInteraction(final ButtonInteractionEvent event) { String buttonId = event.getComponentId(); if (!buttonId.startsWith("voice_")) return; @@ -60,7 +60,7 @@ public class VoiceButtonHandler extends ListenerAdapter { } } - private void handleLock(ButtonInteractionEvent event, VoiceChannel channel) { + private void handleLock(final ButtonInteractionEvent event, final VoiceChannel channel) { boolean isLocked = channel.getPermissionOverride(event.getGuild().getPublicRole()) != null && channel @@ -91,7 +91,7 @@ public class VoiceButtonHandler extends ListenerAdapter { } } - private void handleLimit(ButtonInteractionEvent event, VoiceChannel channel) { + private void handleLimit(final ButtonInteractionEvent event, final VoiceChannel channel) { TextInput limitInput = TextInput.create("limit", TextInputStyle.SHORT) .setPlaceholder("0-99 (0 = без лимита)") @@ -109,7 +109,7 @@ public class VoiceButtonHandler extends ListenerAdapter { event.replyModal(modal).queue(); } - private void handleRename(ButtonInteractionEvent event, VoiceChannel channel) { + private void handleRename(final ButtonInteractionEvent event, final VoiceChannel channel) { TextInput nameInput = TextInput.create("name", TextInputStyle.SHORT) .setPlaceholder("Введите название канала") @@ -127,7 +127,7 @@ public class VoiceButtonHandler extends ListenerAdapter { event.replyModal(modal).queue(); } - private void handleBitrate(ButtonInteractionEvent event, VoiceChannel channel) { + private void handleBitrate(final ButtonInteractionEvent event, final VoiceChannel channel) { TextInput bitrateInput = TextInput.create("bitrate", TextInputStyle.SHORT) .setPlaceholder("8-384") @@ -145,7 +145,7 @@ public class VoiceButtonHandler extends ListenerAdapter { event.replyModal(modal).queue(); } - private void handleDelete(ButtonInteractionEvent event, VoiceChannel channel) { + private void handleDelete(final ButtonInteractionEvent event, final VoiceChannel channel) { event.reply("🗑️ Удаление канала...").setEphemeral(true).queue(); voiceManager.deletePersonalChannel(channel.getId(), event.getGuild()); LoggerDecorator.voice( @@ -153,7 +153,7 @@ public class VoiceButtonHandler extends ListenerAdapter { "Канал " + channel.getName() + " удален пользователем " + event.getUser().getName()); } - private boolean isOwnerOrAdmin(Member member, String channelId) { + private boolean isOwnerOrAdmin(final Member member, final String channelId) { if (member.hasPermission(Permission.ADMINISTRATOR)) return true; var channelData = voiceManager.getChannelData(channelId); return channelData != null && channelData.getOwnerId().equals(member.getId()); diff --git a/src/main/java/creator/loki/feature/voice/handler/VoiceModalHandler.java b/src/main/java/creator/loki/feature/voice/handler/VoiceModalHandler.java index 027a210..4f52b51 100644 --- a/src/main/java/creator/loki/feature/voice/handler/VoiceModalHandler.java +++ b/src/main/java/creator/loki/feature/voice/handler/VoiceModalHandler.java @@ -21,7 +21,7 @@ public class VoiceModalHandler extends ListenerAdapter { } @Override - public void onModalInteraction(ModalInteractionEvent event) { + public void onModalInteraction(final ModalInteractionEvent event) { String modalId = event.getModalId(); if (!modalId.startsWith("voice_")) return; @@ -45,7 +45,7 @@ public class VoiceModalHandler extends ListenerAdapter { } } - private void handleRename(ModalInteractionEvent event, VoiceChannel channel) { + private void handleRename(final ModalInteractionEvent event, final VoiceChannel channel) { String newName = event.getValue("name").getAsString(); channel .getManager() @@ -58,7 +58,7 @@ public class VoiceModalHandler extends ListenerAdapter { error -> event.reply("❌ Ошибка переименования канала").setEphemeral(true).queue()); } - private void handleLimit(ModalInteractionEvent event, VoiceChannel channel) { + private void handleLimit(final ModalInteractionEvent event, final VoiceChannel channel) { try { int limit = Integer.parseInt(event.getValue("limit").getAsString()); if (limit < 0 || limit > 99) { @@ -82,7 +82,7 @@ public class VoiceModalHandler extends ListenerAdapter { } } - private void handleBitrate(ModalInteractionEvent event, VoiceChannel channel) { + private void handleBitrate(final ModalInteractionEvent event, final VoiceChannel channel) { try { int bitrate = Integer.parseInt(event.getValue("bitrate").getAsString()); if (bitrate < 8 || bitrate > 384) { diff --git a/src/main/java/creator/loki/feature/voice/listener/VoiceChannelListener.java b/src/main/java/creator/loki/feature/voice/listener/VoiceChannelListener.java index c75ce1b..b43fef9 100644 --- a/src/main/java/creator/loki/feature/voice/listener/VoiceChannelListener.java +++ b/src/main/java/creator/loki/feature/voice/listener/VoiceChannelListener.java @@ -23,7 +23,7 @@ public class VoiceChannelListener extends ListenerAdapter { } @Override - public void onGuildVoiceUpdate(GuildVoiceUpdateEvent event) { + public void onGuildVoiceUpdate(final GuildVoiceUpdateEvent event) { Member member = event.getMember(); Guild guild = event.getGuild(); diff --git a/src/main/java/creator/loki/feature/voice/listener/VoiceSyncListener.java b/src/main/java/creator/loki/feature/voice/listener/VoiceSyncListener.java index ebad643..0ad1bb5 100644 --- a/src/main/java/creator/loki/feature/voice/listener/VoiceSyncListener.java +++ b/src/main/java/creator/loki/feature/voice/listener/VoiceSyncListener.java @@ -21,7 +21,7 @@ public class VoiceSyncListener extends ListenerAdapter { } @Override - public void onChannelUpdateName(ChannelUpdateNameEvent event) { + public void onChannelUpdateName(final ChannelUpdateNameEvent event) { if (!(event.getChannel() instanceof VoiceChannel channel)) return; VoiceChannelData data = voiceManager.getChannelData(channel.getId()); diff --git a/src/main/java/creator/loki/feature/voice/repository/VoiceChannelRepository.java b/src/main/java/creator/loki/feature/voice/repository/VoiceChannelRepository.java index db813c8..be06ef0 100644 --- a/src/main/java/creator/loki/feature/voice/repository/VoiceChannelRepository.java +++ b/src/main/java/creator/loki/feature/voice/repository/VoiceChannelRepository.java @@ -22,10 +22,10 @@ public class VoiceChannelRepository { public VoiceChannelData getChannelData(String channelId) { String sql = "SELECT * FROM voice_channels WHERE channel_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, channelId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { if (rs.next()) { return new VoiceChannelData( rs.getString("channel_id"), rs.getString("owner_id"), rs.getLong("created_at")); @@ -38,7 +38,7 @@ public class VoiceChannelRepository { return null; } - public void saveChannelData(VoiceChannelData data) { + public void saveChannelData(final VoiceChannelData data) { String sql = """ INSERT INTO voice_channels (channel_id, owner_id, created_at) @@ -49,7 +49,7 @@ public class VoiceChannelRepository { created_at = excluded.created_at """; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, data.getChannelId()); stmt.setString(2, data.getOwnerId()); stmt.setLong(3, data.getCreatedAt()); @@ -62,7 +62,7 @@ public class VoiceChannelRepository { public void deleteChannelData(String channelId) { String sql = "DELETE FROM voice_channels WHERE channel_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, channelId); stmt.executeUpdate(); } catch (SQLException e) { @@ -74,7 +74,7 @@ public class VoiceChannelRepository { Map channels = new HashMap<>(); String sql = "SELECT * FROM voice_channels"; - try (PreparedStatement stmt = database.prepare(sql); + try (final PreparedStatement stmt = database.prepare(sql); ResultSet rs = stmt.executeQuery()) { while (rs.next()) { @@ -90,7 +90,7 @@ public class VoiceChannelRepository { return channels; } - public boolean hasChannel(String channelId) { + public boolean hasChannel(final String channelId) { return getChannelData(channelId) != null; } } diff --git a/src/main/java/creator/loki/feature/voice/repository/VoicePresetRepository.java b/src/main/java/creator/loki/feature/voice/repository/VoicePresetRepository.java index 5f125e9..4f8a9ad 100644 --- a/src/main/java/creator/loki/feature/voice/repository/VoicePresetRepository.java +++ b/src/main/java/creator/loki/feature/voice/repository/VoicePresetRepository.java @@ -19,13 +19,13 @@ public class VoicePresetRepository { } /** Получить пресет пользователя */ - public VoicePreset getPreset(String userId) { + public VoicePreset getPreset(final String userId) { String sql = "SELECT * FROM voice_presets WHERE user_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, userId); - try (ResultSet rs = stmt.executeQuery()) { + try (final ResultSet rs = stmt.executeQuery()) { if (rs.next()) { VoicePreset preset = new VoicePreset(); preset.setName(rs.getString("name")); @@ -46,7 +46,7 @@ public class VoicePresetRepository { } /** Сохранить пресет пользователя */ - public void savePreset(String userId, VoicePreset preset) { + public void savePreset(final String userId, final VoicePreset preset) { String sql = """ INSERT INTO voice_presets (user_id, name, user_limit, bitrate, region, @@ -63,7 +63,7 @@ public class VoicePresetRepository { denied_role_id = excluded.denied_role_id """; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, userId); stmt.setString(2, preset.getName()); stmt.setInt(3, preset.getLimit()); @@ -79,10 +79,10 @@ public class VoicePresetRepository { } /** Удалить пресет пользователя */ - public void deletePreset(String userId) { + public void deletePreset(final String userId) { String sql = "DELETE FROM voice_presets WHERE user_id = ?"; - try (PreparedStatement stmt = database.prepare(sql)) { + try (final PreparedStatement stmt = database.prepare(sql)) { stmt.setString(1, userId); stmt.executeUpdate(); } catch (SQLException e) { @@ -91,7 +91,7 @@ public class VoicePresetRepository { } /** Проверить существует ли пресет */ - public boolean hasPreset(String userId) { + public boolean hasPreset(final String userId) { return getPreset(userId) != null; } } diff --git a/src/main/java/creator/loki/feature/voice/service/VoiceChannelManager.java b/src/main/java/creator/loki/feature/voice/service/VoiceChannelManager.java index 2acec92..0bf4296 100644 --- a/src/main/java/creator/loki/feature/voice/service/VoiceChannelManager.java +++ b/src/main/java/creator/loki/feature/voice/service/VoiceChannelManager.java @@ -29,21 +29,18 @@ public class VoiceChannelManager { private String triggerChannelId; private String categoryId; - public VoiceChannelManager( - VoiceChannelRepository channelRepo, - VoicePresetRepository presetRepo, - ConfigRepository configRepo) { + public VoiceChannelManager(VoiceChannelRepository channelRepo, VoicePresetRepository presetRepo, final ConfigRepository configRepo) { this.channelRepo = channelRepo; this.presetRepo = presetRepo; this.triggerChannelId = configRepo.get("voice.trigger_channel_id"); this.categoryId = configRepo.get("voice.category_id"); } - public boolean isTriggerChannel(String channelId) { + public boolean isTriggerChannel(final String channelId) { return channelId != null && channelId.equals(triggerChannelId); } - public VoiceChannel createPersonalChannel(Member member, Guild guild) { + public VoiceChannel createPersonalChannel(final Member member, final Guild guild) { try { var channel = buildPersonalChannel(member, guild); channelRepo.saveChannelData(new VoiceChannelData(channel.getId(), member.getId())); @@ -59,7 +56,7 @@ public class VoiceChannelManager { } } - private VoiceChannel buildPersonalChannel(Member member, Guild guild) { + private VoiceChannel buildPersonalChannel(final Member member, final Guild guild) { return guild .createVoiceChannel("Канал: " + member.getEffectiveName()) .setParent(guild.getCategoryById(categoryId)) @@ -67,7 +64,7 @@ public class VoiceChannelManager { .complete(); } - public void deletePersonalChannel(String channelId, Guild guild) { + public void deletePersonalChannel(final String channelId, final Guild guild) { channelRepo.deleteChannelData(channelId); try { var channel = guild.getVoiceChannelById(channelId); @@ -81,7 +78,7 @@ public class VoiceChannelManager { } } - public VoiceChannelData getChannelData(String channelId) { + public VoiceChannelData getChannelData(final String channelId) { return channelRepo.getChannelData(channelId); } @@ -93,7 +90,7 @@ public class VoiceChannelManager { return categoryId; } - public void updatePresetSetting(String userId, String setting, Object value) { + public void updatePresetSetting(final String userId, final String setting, final Object value) { var preset = getUserPreset(userId); if ("name".equals(setting)) preset.setName((String) value); else if ("limit".equals(setting)) preset.setLimit((Integer) value); @@ -102,7 +99,7 @@ public class VoiceChannelManager { saveUserPreset(userId, preset); } - public void sendControlPanel(VoiceChannel channel, Member owner) { + public void sendControlPanel(final VoiceChannel channel, final Member owner) { var limitText = channel.getUserLimit() == 0 ? "∞" : String.valueOf(channel.getUserLimit()); var embed = new EmbedBuilder() @@ -122,16 +119,16 @@ public class VoiceChannelManager { channel.sendMessageEmbeds(embed.build()).addComponents(row).queue(); } - public void saveUserPreset(String userId, VoicePreset preset) { + public void saveUserPreset(final String userId, VoicePreset preset) { presetRepo.savePreset(userId, preset); LoggerDecorator.voice(logger, "Сохранён пресет для пользователя " + userId); } - public VoicePreset getUserPreset(String userId) { + public VoicePreset getUserPreset(final String userId) { return presetRepo.getPreset(userId) != null ? presetRepo.getPreset(userId) : new VoicePreset(); } - public void applyUserPreset(VoiceChannel channel, String userId) { + public void applyUserPreset(final VoiceChannel channel, final String userId) { var preset = getUserPreset(userId); try { if (preset.getName() != null && !preset.getName().isEmpty()) diff --git a/src/main/java/creator/loki/feature/voice/service/VoiceSetupPrefixCommand.java b/src/main/java/creator/loki/feature/voice/service/VoiceSetupPrefixCommand.java index 7b9d1c8..293cfd6 100644 --- a/src/main/java/creator/loki/feature/voice/service/VoiceSetupPrefixCommand.java +++ b/src/main/java/creator/loki/feature/voice/service/VoiceSetupPrefixCommand.java @@ -43,7 +43,7 @@ public class VoiceSetupPrefixCommand implements Command { } @Override - public void execute(CommandContext context) { + public void execute(final CommandContext context) { if (!context.getAuthor().hasPermission(Permission.ADMINISTRATOR)) { context.getChannel().sendMessage("❌ У вас нет прав администратора!").queue(); return; @@ -61,7 +61,7 @@ public class VoiceSetupPrefixCommand implements Command { } } - private void handleTrigger(CommandContext context, List args) { + private void handleTrigger(final CommandContext context, final List args) { if (args.size() < 2) { var msg = "❌ Укажите голосовой канал: `#канал`, `<#id>` или числовой id.\nПример: `!voice-setup trigger 123456789012345678`"; @@ -88,7 +88,7 @@ public class VoiceSetupPrefixCommand implements Command { context.getChannel().sendMessageEmbeds(embed).queue(); } - private void handleCategory(CommandContext context, List args) { + private void handleCategory(final CommandContext context, final List args) { if (args.size() < 2) { var msg = "❌ Укажите категорию: `#категория`, `<#id>` или числовой id.\nПример: `!voice-setup category 123456789012345678`"; @@ -115,7 +115,7 @@ public class VoiceSetupPrefixCommand implements Command { context.getChannel().sendMessageEmbeds(embed).queue(); } - private void handleInfo(CommandContext context) { + private void handleInfo(final CommandContext context) { var triggerId = configRepo.get("voice.trigger_channel_id"); var categoryId = configRepo.get("voice.category_id"); var embed = @@ -131,7 +131,7 @@ public class VoiceSetupPrefixCommand implements Command { context.getChannel().sendMessageEmbeds(embed.build()).queue(); } - private void sendHelp(CommandContext context) { + private void sendHelp(final CommandContext context) { var desc = "**Доступные команды:**\n• `!voice-setup trigger` - `#войс` или числовой id канала\n• `!voice-setup category` - `#категория` или id\n• `!voice-setup info` - Показать текущую конфигурацию\n\nТекстовые каналы для управления создаются автоматически при создании войса.\nТолько для администраторов!"; context diff --git a/src/main/java/creator/loki/feature/welcome/WelcomeListener.java b/src/main/java/creator/loki/feature/welcome/WelcomeListener.java index 65ac20f..5b853ea 100644 --- a/src/main/java/creator/loki/feature/welcome/WelcomeListener.java +++ b/src/main/java/creator/loki/feature/welcome/WelcomeListener.java @@ -37,7 +37,7 @@ public class WelcomeListener extends ListenerAdapter { "Здарова, %s! Чувствуй себя как дома."); @Override - public void onGuildMemberJoin(GuildMemberJoinEvent event) { + public void onGuildMemberJoin(final GuildMemberJoinEvent event) { Guild guild = event.getGuild(); String mention = event.getMember().getAsMention(); @@ -54,7 +54,7 @@ public class WelcomeListener extends ListenerAdapter { + channel.getName()); } - private TextChannel findWelcomeChannel(Guild guild) { + private TextChannel findWelcomeChannel(final Guild guild) { List candidates = guild.getTextChannels().stream() .filter( diff --git a/src/main/java/creator/loki/integration/nekos/NekosLifeApi.java b/src/main/java/creator/loki/integration/nekos/NekosLifeApi.java index 91604e0..0e34a16 100644 --- a/src/main/java/creator/loki/integration/nekos/NekosLifeApi.java +++ b/src/main/java/creator/loki/integration/nekos/NekosLifeApi.java @@ -38,14 +38,14 @@ public class NekosLifeApi { NekosLifeApi.instance = this; } - public String getImage(String category) { + public String getImage(final String category) { int maxRetries = 3; long retryDelay = 1000; for (int attempt = 1; attempt <= maxRetries; attempt++) { Request request = new Request.Builder().url(API_BASE + category).get().build(); - try (Response response = client.newCall(request).execute()) { + try (final Response response = client.newCall(request).execute()) { if (!response.isSuccessful()) { if (response.code() >= 500) { logger.warn( @@ -83,7 +83,7 @@ public class NekosLifeApi { return null; } - public static String fetchImage(String category) { + public static String fetchImage(final String category) { if (instance == null) { instance = new NekosLifeApi(); } diff --git a/src/main/java/creator/loki/util/GuildChannelResolve.java b/src/main/java/creator/loki/util/GuildChannelResolve.java index c6d08c7..e9be0b1 100644 --- a/src/main/java/creator/loki/util/GuildChannelResolve.java +++ b/src/main/java/creator/loki/util/GuildChannelResolve.java @@ -32,8 +32,7 @@ public final class GuildChannelResolve { return Optional.empty(); } - public static VoiceChannel voice( - Guild guild, Message message, List args, int snowflakeArgIndex) { + public static VoiceChannel voice(final Guild guild, final Message message, final List args, final int snowflakeArgIndex) { List mentioned = message.getMentions().getChannels(VoiceChannel.class); if (!mentioned.isEmpty()) { return mentioned.get(0); @@ -46,8 +45,7 @@ public final class GuildChannelResolve { .orElse(null); } - public static TextChannel text( - Guild guild, Message message, List args, int snowflakeArgIndex) { + public static TextChannel text(final Guild guild, final Message message, final List args, final int snowflakeArgIndex) { List mentioned = message.getMentions().getChannels(TextChannel.class); if (!mentioned.isEmpty()) { return mentioned.get(0); @@ -60,8 +58,7 @@ public final class GuildChannelResolve { .orElse(null); } - public static Category category( - Guild guild, Message message, List args, int snowflakeArgIndex) { + public static Category category(final Guild guild, final Message message, final List args, final int snowflakeArgIndex) { List mentioned = message.getMentions().getChannels(Category.class); if (!mentioned.isEmpty()) { return mentioned.get(0); diff --git a/src/main/java/creator/loki/util/LoggerDecorator.java b/src/main/java/creator/loki/util/LoggerDecorator.java index 4eb4056..040f11e 100644 --- a/src/main/java/creator/loki/util/LoggerDecorator.java +++ b/src/main/java/creator/loki/util/LoggerDecorator.java @@ -3,39 +3,39 @@ package creator.loki.util; import org.slf4j.Logger; public class LoggerDecorator { - public static void bot(Logger log, String msg) { + public static void bot(final Logger log, final String msg) { log.info("🤖 {}", msg); } - public static void music(Logger log, String msg) { + public static void music(final Logger log, final String msg) { log.info("🎵 {}", msg); } - public static void command(Logger log, String command, String user, String msg) { + public static void command(final Logger log, final String command, final String user, final String msg) { log.debug("⚡ [{}] {}: {}", command, user, msg); } - public static void database(Logger log, String msg) { + public static void database(final Logger log, final String msg) { log.info("🗄️ {}", msg); } - public static void voice(Logger log, String msg) { + public static void voice(final Logger log, final String msg) { log.info("🎤 {}", msg); } - public static void warn(Logger log, String msg) { + public static void warn(final Logger log, final String msg) { log.warn("⚠️ {}", msg); } - public static void error(Logger log, String msg, Throwable t) { + public static void error(final Logger log, final String msg, final Throwable t) { log.error("❌ {}", msg, t); } - public static void startup(Logger log, String msg) { + public static void startup(final Logger log, final String msg) { log.info("🚀 {}", msg); } - public static void success(Logger log, String msg) { + public static void success(final Logger log, final String msg) { log.info("✅ {}", msg); } }