style: add braces to single-line if/for/while/else (ControlStatementBraces)

- Add braces to single-line if/for/while statements and standalone else
- Handle string literals inside conditions
- Skip complex conditions with nested {[ (array init in for-each)
- Skip multi-line statements (conservative approach)
This commit is contained in:
loki5512344 2026-07-29 19:24:35 +02:00
parent 61150c5063
commit 7e725bbee6
Signed by: boba
GPG key ID: 253067914055423B
95 changed files with 376 additions and 376 deletions

View file

@ -25,7 +25,7 @@ public final class ConfigLoader {
} }
private static int parsePort(String raw, final String key) { private static int parsePort(String raw, final String key) {
if (raw == null || raw.isBlank()) return 0; if (raw == null || raw.isBlank()) { return 0; }
try { try {
int port = Integer.parseInt(raw.trim()); int port = Integer.parseInt(raw.trim());
if (port < 0 || port > 65535) { if (port < 0 || port > 65535) {

View file

@ -105,7 +105,7 @@ public class BotInitializer {
} }
private JDA createMusicJDA() { private JDA createMusicJDA() {
if (config.getMusicToken() == null || config.getMusicToken().isBlank()) return null; if (config.getMusicToken() == null || config.getMusicToken().isBlank()) { return null; }
LoggerDecorator.startup(logger, "Инициализация music бота..."); LoggerDecorator.startup(logger, "Инициализация music бота...");
LavalinkManager ml = LavalinkManager ml =
LavalinkManagerFactory.create(config, queueRepository, config.getMusicToken()); LavalinkManagerFactory.create(config, queueRepository, config.getMusicToken());
@ -121,7 +121,7 @@ public class BotInitializer {
} }
private JDA createRadioJDA(final LavalinkManager radioLavalink) { private JDA createRadioJDA(final LavalinkManager radioLavalink) {
if (config.getRadioToken() == null || config.getRadioToken().isBlank()) return null; if (config.getRadioToken() == null || config.getRadioToken().isBlank()) { return null; }
LoggerDecorator.startup(logger, "Инициализация radio бота..."); LoggerDecorator.startup(logger, "Инициализация radio бота...");
var builder = var builder =
JdaFactory.createBuilder( JdaFactory.createBuilder(

View file

@ -17,7 +17,7 @@ public class MessageCache extends ListenerAdapter {
@Override @Override
public void onMessageReceived(final MessageReceivedEvent event) { public void onMessageReceived(final MessageReceivedEvent event) {
if (event.getAuthor().isBot()) return; if (event.getAuthor().isBot()) { return; }
String content = event.getMessage().getContentRaw(); String content = event.getMessage().getContentRaw();
if (!content.isBlank()) { if (!content.isBlank()) {
cache.put(event.getMessageId(), content); cache.put(event.getMessageId(), content);

View file

@ -29,10 +29,10 @@ public class DatabaseMigration {
return; return;
} }
var data = parseJson(jsonPath); var data = parseJson(jsonPath);
if (data == null) return; if (data == null) { return; }
try (var chk = database.prepare("SELECT value FROM config WHERE key = 'migrated'")) { try (var chk = database.prepare("SELECT value FROM config WHERE key = 'migrated'")) {
var rs = chk.executeQuery(); var rs = chk.executeQuery();
if (rs.next() && "true".equals(rs.getString("value"))) return; if (rs.next() && "true".equals(rs.getString("value"))) { return; }
} catch (SQLException ignored) { } catch (SQLException ignored) {
} }
migrateUserStats(data); migrateUserStats(data);
@ -62,7 +62,7 @@ public class DatabaseMigration {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private void migrateUserStats(final Map<String, Object> data) { private void migrateUserStats(final Map<String, Object> data) {
var userStats = (Map<String, Object>) data.get("userStats"); var userStats = (Map<String, Object>) data.get("userStats");
if (userStats == null) return; if (userStats == null) { return; }
LoggerDecorator.database(logger, "Миграция userStats: " + userStats.size() + " записей"); LoggerDecorator.database(logger, "Миграция userStats: " + userStats.size() + " записей");
try (var stmt = try (var stmt =
database.prepare( database.prepare(
@ -87,7 +87,7 @@ public class DatabaseMigration {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private void migrateReputation(final Map<String, Object> data) { private void migrateReputation(final Map<String, Object> data) {
var reputation = (Map<String, Object>) data.get("reputation"); var reputation = (Map<String, Object>) data.get("reputation");
if (reputation == null) return; if (reputation == null) { return; }
LoggerDecorator.database(logger, "Миграция reputation: " + reputation.size() + " записей"); LoggerDecorator.database(logger, "Миграция reputation: " + reputation.size() + " записей");
try (var a = try (var a =
database.prepare("INSERT OR REPLACE INTO reputation (user_id, reputation) VALUES (?, ?)")) { database.prepare("INSERT OR REPLACE INTO reputation (user_id, reputation) VALUES (?, ?)")) {
@ -105,7 +105,7 @@ public class DatabaseMigration {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private void migrateShipPairs(final Map<String, Object> data) { private void migrateShipPairs(final Map<String, Object> data) {
var shipPairs = (Map<String, Object>) data.get("shipPairs"); var shipPairs = (Map<String, Object>) data.get("shipPairs");
if (shipPairs == null) return; if (shipPairs == null) { return; }
LoggerDecorator.database(logger, "Миграция shipPairs: " + shipPairs.size() + " записей"); LoggerDecorator.database(logger, "Миграция shipPairs: " + shipPairs.size() + " записей");
try (var b = try (var b =
database.prepare( database.prepare(
@ -128,7 +128,7 @@ public class DatabaseMigration {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private void migrateCustomRoles(final Map<String, Object> data) { private void migrateCustomRoles(final Map<String, Object> data) {
var customRoles = (Map<String, Object>) data.get("custom_roles"); var customRoles = (Map<String, Object>) data.get("custom_roles");
if (customRoles == null) return; if (customRoles == null) { return; }
LoggerDecorator.database(logger, "Миграция custom_roles"); LoggerDecorator.database(logger, "Миграция custom_roles");
try (var c = try (var c =
database.prepare( database.prepare(

View file

@ -73,7 +73,7 @@ public class GenerateRatingsCommand implements Command {
var memberCount = 0; var memberCount = 0;
var generatedCount = 0; var generatedCount = 0;
for (Member member : context.getGuild().getMembers()) { for (Member member : context.getGuild().getMembers()) {
if (member.getUser().isBot()) continue; if (member.getUser().isBot()) { continue; }
memberCount++; memberCount++;
var userId = member.getUser().getId(); var userId = member.getUser().getId();
for (var type : new String[] {"ship", "gay", "iq", "pp", "mustache", "fat", "boykisser"}) { for (var type : new String[] {"ship", "gay", "iq", "pp", "mustache", "fat", "boykisser"}) {
@ -96,13 +96,13 @@ public class GenerateRatingsCommand implements Command {
} }
private void generateRatingForUser(final String guildId, final String userId, final String ratingType) { private void generateRatingForUser(final String guildId, final String userId, final String ratingType) {
if (ratingsRepository.hasRating(guildId, userId, ratingType)) return; if (ratingsRepository.hasRating(guildId, userId, ratingType)) { return; }
var value = var value =
switch (ratingType) { switch (ratingType) {
case "iq" -> random.nextInt(201); case "iq" -> random.nextInt(201);
case "pp" -> random.nextInt(31); case "pp" -> random.nextInt(31);
case "mustache" -> { case "mustache" -> {
if (random.nextInt(100) < 1) yield 1000 + random.nextInt(500); if (random.nextInt(100) < 1) { yield 1000 + random.nextInt(500); }
yield random.nextInt(101); yield random.nextInt(101);
} }
default -> random.nextInt(101); default -> random.nextInt(101);

View file

@ -43,7 +43,7 @@ public class SetupSlashHandler extends ListenerAdapter {
@Override @Override
public void onGuildReady(@NotNull final GuildReadyEvent event) { public void onGuildReady(@NotNull final GuildReadyEvent event) {
if (registered) return; if (registered) { return; }
registered = true; registered = true;
event.getJDA().updateCommands() event.getJDA().updateCommands()
.addCommands(Commands.slash("setup", "Панель управления сервером")) .addCommands(Commands.slash("setup", "Панель управления сервером"))
@ -52,7 +52,7 @@ public class SetupSlashHandler extends ListenerAdapter {
@Override @Override
public void onSlashCommandInteraction(@NotNull final SlashCommandInteractionEvent event) { public void onSlashCommandInteraction(@NotNull final SlashCommandInteractionEvent event) {
if (!event.getName().equals("setup")) return; if (!event.getName().equals("setup")) { return; }
event.deferReply().queue(); event.deferReply().queue();
showDashboard(event.getGuild(), event.getHook()); showDashboard(event.getGuild(), event.getHook());
} }
@ -60,7 +60,7 @@ public class SetupSlashHandler extends ListenerAdapter {
@Override @Override
public void onButtonInteraction(@NotNull final ButtonInteractionEvent event) { public void onButtonInteraction(@NotNull final ButtonInteractionEvent event) {
String id = event.getComponentId(); String id = event.getComponentId();
if (!id.startsWith("setup_")) return; if (!id.startsWith("setup_")) { return; }
event.deferEdit().queue(); event.deferEdit().queue();
switch (id) { switch (id) {
@ -78,7 +78,7 @@ public class SetupSlashHandler extends ListenerAdapter {
@Override @Override
public void onEntitySelectInteraction(@NotNull final EntitySelectInteractionEvent event) { public void onEntitySelectInteraction(@NotNull final EntitySelectInteractionEvent event) {
String id = event.getComponentId(); String id = event.getComponentId();
if (!id.startsWith("setup_")) return; if (!id.startsWith("setup_")) { return; }
event.deferEdit().queue(); event.deferEdit().queue();
String value = event.getValues().get(0).getId(); String value = event.getValues().get(0).getId();
@ -111,7 +111,7 @@ public class SetupSlashHandler extends ListenerAdapter {
@Override @Override
public void onStringSelectInteraction(@NotNull final StringSelectInteractionEvent event) { public void onStringSelectInteraction(@NotNull final StringSelectInteractionEvent event) {
String id = event.getComponentId(); String id = event.getComponentId();
if (!id.startsWith("setup_")) return; if (!id.startsWith("setup_")) { return; }
event.deferEdit().queue(); event.deferEdit().queue();
if (id.equals("setup_levelrole_remove_select")) { if (id.equals("setup_levelrole_remove_select")) {
@ -124,7 +124,7 @@ public class SetupSlashHandler extends ListenerAdapter {
@Override @Override
public void onModalInteraction(@NotNull final ModalInteractionEvent event) { public void onModalInteraction(@NotNull final ModalInteractionEvent event) {
String id = event.getModalId(); String id = event.getModalId();
if (!id.startsWith("setup_")) return; if (!id.startsWith("setup_")) { return; }
event.deferEdit().queue(); event.deferEdit().queue();
switch (id) { switch (id) {
@ -418,7 +418,7 @@ public class SetupSlashHandler extends ListenerAdapter {
} }
private void updateCounterChannelName(Guild guild) { private void updateCounterChannelName(Guild guild) {
if (guild == null) return; if (guild == null) { return; }
String channelId = configRepo.get("counter.channel_id"); String channelId = configRepo.get("counter.channel_id");
String format = configRepo.get("counter.format"); String format = configRepo.get("counter.format");
if (channelId != null && format != null) { if (channelId != null && format != null) {

View file

@ -22,7 +22,7 @@ public class FishMessageListener extends ListenerAdapter {
@Override @Override
public void onMessageReceived(@NotNull final MessageReceivedEvent event) { public void onMessageReceived(@NotNull final MessageReceivedEvent event) {
if (event.getAuthor().isBot()) return; if (event.getAuthor().isBot()) { return; }
String content = event.getMessage().getContentRaw().trim(); String content = event.getMessage().getContentRaw().trim();
@ -35,7 +35,7 @@ public class FishMessageListener extends ListenerAdapter {
String userId = event.getAuthor().getId(); String userId = event.getAuthor().getId();
FishingService.FishResult result = fishingService.checkAnswer(userId, answer); FishingService.FishResult result = fishingService.checkAnswer(userId, answer);
if (result == null) return; if (result == null) { return; }
if (result.reward() > 0) { if (result.reward() > 0) {
event event

View file

@ -102,7 +102,7 @@ public class BankCommand implements Command {
.queue(); .queue();
return; return;
} }
if (isDep) economyService.deposit(uid, amount); if (isDep) { economyService.deposit(uid, amount); }
else economyService.withdraw(uid, amount); else economyService.withdraw(uid, amount);
ctx.getChannel() ctx.getChannel()
.sendMessageEmbeds( .sendMessageEmbeds(

View file

@ -79,7 +79,7 @@ public class BlackjackCommand implements Command {
long bet; long bet;
try { try {
bet = Long.parseLong(betStr); bet = Long.parseLong(betStr);
if (bet <= 0) throw new NumberFormatException(); if (bet <= 0) { throw new NumberFormatException(); }
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
context context
.getChannel() .getChannel()
@ -106,7 +106,7 @@ public class BlackjackCommand implements Command {
.queue(); .queue();
return; return;
} }
if (!state.isOver()) activeGames.add(userId); if (!state.isOver()) { activeGames.add(userId); }
context.getChannel().sendMessageEmbeds(buildGameEmbed(state)).queue(); context.getChannel().sendMessageEmbeds(buildGameEmbed(state)).queue();
} }
@ -121,7 +121,7 @@ public class BlackjackCommand implements Command {
} }
BlackjackService.BlackjackState state = BlackjackService.BlackjackState state =
isHit ? blackjackService.hit(userId) : blackjackService.stand(userId); isHit ? blackjackService.hit(userId) : blackjackService.stand(userId);
if (state.isOver()) activeGames.remove(userId); if (state.isOver()) { activeGames.remove(userId); }
context.getChannel().sendMessageEmbeds(buildGameEmbed(state)).queue(); context.getChannel().sendMessageEmbeds(buildGameEmbed(state)).queue();
} }
@ -149,15 +149,15 @@ public class BlackjackCommand implements Command {
private String formatHiddenDealerCards(final String[] cards) { private String formatHiddenDealerCards(final String[] cards) {
var sb = new StringBuilder("?"); var sb = new StringBuilder("?");
for (int i = 1; i < cards.length; i++) sb.append(" + ").append(cards[i]); for (int i = 1; i < cards.length; i++) { sb.append(" + ").append(cards[i]); }
return sb.toString(); return sb.toString();
} }
private String formatResult(final BlackjackService.BlackjackState state) { private String formatResult(final BlackjackService.BlackjackState state) {
long payout = state.payout(); long payout = state.payout();
if (payout > state.bet()) return "🎉 Блэкджек! +" + payout + " LC"; if (payout > state.bet()) { return "🎉 Блэкджек! +" + payout + " LC"; }
if (payout > 0) return "✅ Ты выиграл +" + payout + " LC"; if (payout > 0) { return "✅ Ты выиграл +" + payout + " LC"; }
if (payout == state.bet()) return "🤝 Ничья. Возврат " + payout + " LC"; if (payout == state.bet()) { return "🤝 Ничья. Возврат " + payout + " LC"; }
return "💔 Ты проиграл " + state.bet() + " LC"; return "💔 Ты проиграл " + state.bet() + " LC";
} }
} }

View file

@ -56,7 +56,7 @@ public class SlotCommand implements Command {
long bet; long bet;
try { try {
bet = Long.parseLong(args.get(0)); bet = Long.parseLong(args.get(0));
if (bet <= 0) throw new NumberFormatException(); if (bet <= 0) { throw new NumberFormatException(); }
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
context context
.getChannel() .getChannel()

View file

@ -100,7 +100,7 @@ public class RobCommand implements Command {
.queue(); .queue();
} else { } else {
long penalty = Math.min(Math.min((long) (sender.getCash() * 0.10), 5000L), sender.getCash()); long penalty = Math.min(Math.min((long) (sender.getCash() * 0.10), 5000L), sender.getCash());
if (penalty > 0) economyService.transfer(uid, tid, penalty); if (penalty > 0) { economyService.transfer(uid, tid, penalty); }
ctx.getChannel() ctx.getChannel()
.sendMessageEmbeds( .sendMessageEmbeds(
EmbedFactory.create() EmbedFactory.create()

View file

@ -124,8 +124,8 @@ public class EconomyAccount {
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) return true; if (this == o) { return true; }
if (o == null || getClass() != o.getClass()) return false; if (o == null || getClass() != o.getClass()) { return false; }
EconomyAccount that = (EconomyAccount) o; EconomyAccount that = (EconomyAccount) o;
return Objects.equals(userId, that.userId); return Objects.equals(userId, that.userId);
} }

View file

@ -30,7 +30,7 @@ public enum SlotCombination {
} }
public static SlotCombination match(final String e1, final String e2, final String e3) { public static SlotCombination match(final String e1, final String e2, final String e3) {
if (!e1.equals(e2) || !e2.equals(e3)) return null; if (!e1.equals(e2) || !e2.equals(e3)) { return null; }
for (SlotCombination sc : values()) { for (SlotCombination sc : values()) {
if (sc.emojis[0].equals(e1)) return sc; if (sc.emojis[0].equals(e1)) return sc;
} }

View file

@ -126,7 +126,7 @@ public class SqlEconomyRepository implements EconomyRepository {
} }
private static int clampLimit(final int limit) { private static int clampLimit(final int limit) {
if (limit <= 0) return 1; if (limit <= 0) { return 1; }
return Math.min(limit, MAX_TOP); return Math.min(limit, MAX_TOP);
} }

View file

@ -27,9 +27,9 @@ public class EconomyService {
} }
public boolean transfer(final String fromId, final String toId, long amount) { public boolean transfer(final String fromId, final String toId, long amount) {
if (amount <= 0) return false; if (amount <= 0) { return false; }
EconomyAccount from = repository.getAccount(fromId); EconomyAccount from = repository.getAccount(fromId);
if (from.getCash() < amount) return false; if (from.getCash() < amount) { return false; }
EconomyAccount to = repository.getAccount(toId); EconomyAccount to = repository.getAccount(toId);
repository.save(from.withCash(from.getCash() - amount)); repository.save(from.withCash(from.getCash() - amount));
repository.save(to.withCash(to.getCash() + amount)); repository.save(to.withCash(to.getCash() + amount));
@ -37,18 +37,18 @@ public class EconomyService {
} }
public boolean deposit(final String userId, long amount) { public boolean deposit(final String userId, long amount) {
if (amount <= 0) return false; if (amount <= 0) { return false; }
EconomyAccount account = repository.getAccount(userId); EconomyAccount account = repository.getAccount(userId);
if (account.getCash() < amount) return false; if (account.getCash() < amount) { return false; }
repository.save( repository.save(
account.withCash(account.getCash() - amount).withBank(account.getBank() + amount)); account.withCash(account.getCash() - amount).withBank(account.getBank() + amount));
return true; return true;
} }
public boolean withdraw(final String userId, long amount) { public boolean withdraw(final String userId, long amount) {
if (amount <= 0) return false; if (amount <= 0) { return false; }
EconomyAccount account = repository.getAccount(userId); EconomyAccount account = repository.getAccount(userId);
if (account.getBank() < amount) return false; if (account.getBank() < amount) { return false; }
repository.save( repository.save(
account.withBank(account.getBank() - amount).withCash(account.getCash() + amount)); account.withBank(account.getBank() - amount).withCash(account.getCash() + amount));
return true; return true;
@ -62,9 +62,9 @@ public class EconomyService {
} }
public boolean spendCash(final String userId, long amount) { public boolean spendCash(final String userId, long amount) {
if (amount <= 0) return false; if (amount <= 0) { return false; }
EconomyAccount account = repository.getAccount(userId); EconomyAccount account = repository.getAccount(userId);
if (account.getCash() < amount) return false; if (account.getCash() < amount) { return false; }
repository.save(account.withCash(account.getCash() - amount).withAddedSpent(amount)); repository.save(account.withCash(account.getCash() - amount).withAddedSpent(amount));
return true; return true;
} }
@ -72,7 +72,7 @@ public class EconomyService {
public DailyResult claimDaily(final String userId) { public DailyResult claimDaily(final String userId) {
EconomyAccount account = repository.getAccount(userId); EconomyAccount account = repository.getAccount(userId);
String today = LocalDate.now().toString(); String today = LocalDate.now().toString();
if (today.equals(account.getLastDaily())) return null; if (today.equals(account.getLastDaily())) { return null; }
String yesterday = LocalDate.now().minusDays(1).toString(); String yesterday = LocalDate.now().minusDays(1).toString();
int streak; int streak;
if (yesterday.equals(account.getLastDaily())) { if (yesterday.equals(account.getLastDaily())) {
@ -95,9 +95,9 @@ public class EconomyService {
public int upgradeFishingLuck(final String userId) { public int upgradeFishingLuck(final String userId) {
EconomyAccount account = repository.getAccount(userId); EconomyAccount account = repository.getAccount(userId);
if (account.getFishingLuck() >= 5) return -1; if (account.getFishingLuck() >= 5) { return -1; }
long cost = 800L * (account.getFishingLuck() + 1); long cost = 800L * (account.getFishingLuck() + 1);
if (account.getCash() < cost) return -1; if (account.getCash() < cost) { return -1; }
int newLevel = account.getFishingLuck() + 1; int newLevel = account.getFishingLuck() + 1;
repository.save( repository.save(
account.withCash(account.getCash() - cost).withFishingLuck(newLevel).withAddedSpent(cost)); account.withCash(account.getCash() - cost).withFishingLuck(newLevel).withAddedSpent(cost));
@ -106,9 +106,9 @@ public class EconomyService {
public int upgradeEfficiency(final String userId) { public int upgradeEfficiency(final String userId) {
EconomyAccount account = repository.getAccount(userId); EconomyAccount account = repository.getAccount(userId);
if (account.getEfficiency() >= 5) return -1; if (account.getEfficiency() >= 5) { return -1; }
long cost = 800L * (account.getEfficiency() + 1); long cost = 800L * (account.getEfficiency() + 1);
if (account.getCash() < cost) return -1; if (account.getCash() < cost) { return -1; }
int newLevel = account.getEfficiency() + 1; int newLevel = account.getEfficiency() + 1;
repository.save( repository.save(
account.withCash(account.getCash() - cost).withEfficiency(newLevel).withAddedSpent(cost)); account.withCash(account.getCash() - cost).withEfficiency(newLevel).withAddedSpent(cost));

View file

@ -34,7 +34,7 @@ public class FishingService {
EconomyAccount account = repository.getAccount(userId); EconomyAccount account = repository.getAccount(userId);
if (account.getLastFish() != null) { if (account.getLastFish() != null) {
long elapsed = System.currentTimeMillis() - Long.parseLong(account.getLastFish()); long elapsed = System.currentTimeMillis() - Long.parseLong(account.getLastFish());
if (elapsed < COOLDOWN_MS) return null; if (elapsed < COOLDOWN_MS) { return null; }
} }
int size; int size;
@ -100,14 +100,14 @@ public class FishingService {
public FishResult checkAnswer(final String userId, int answer) { public FishResult checkAnswer(final String userId, int answer) {
ActiveFish session = activeFishing.get(userId); ActiveFish session = activeFishing.get(userId);
if (session == null) return null; if (session == null) { return null; }
return checkAnswer(userId, answer, session.startTime(), session.difficulty()); return checkAnswer(userId, answer, session.startTime(), session.difficulty());
} }
public FishResult checkAnswer(final String userId, int answer, final long startTime, final String difficulty) { public FishResult checkAnswer(final String userId, int answer, final long startTime, final String difficulty) {
ActiveFish session = activeFishing.remove(userId); ActiveFish session = activeFishing.remove(userId);
if (session == null) return null; if (session == null) { return null; }
if (session.startTime() != startTime || !session.difficulty().equals(difficulty)) return null; if (session.startTime() != startTime || !session.difficulty().equals(difficulty)) { return null; }
EconomyAccount account = repository.getAccount(userId); EconomyAccount account = repository.getAccount(userId);
long elapsed = System.currentTimeMillis() - session.startTime(); long elapsed = System.currentTimeMillis() - session.startTime();

View file

@ -28,9 +28,9 @@ public class BlackjackService {
List<String> playerCards, List<String> dealerCards, long bet, String userId) {} List<String> playerCards, List<String> dealerCards, long bet, String userId) {}
public BlackjackState startGame(final String userId, final long bet) { public BlackjackState startGame(final String userId, final long bet) {
if (bet <= 0 || activeGames.containsKey(userId)) return null; if (bet <= 0 || activeGames.containsKey(userId)) { return null; }
var account = repository.getAccount(userId); var account = repository.getAccount(userId);
if (account.getCash() < bet) return null; if (account.getCash() < bet) { return null; }
repository.save(account.withCash(account.getCash() - bet)); repository.save(account.withCash(account.getCash() - bet));
@ -54,13 +54,13 @@ public class BlackjackService {
public BlackjackState hit(final String userId) { public BlackjackState hit(final String userId) {
var game = activeGames.get(userId); var game = activeGames.get(userId);
if (game == null) return null; if (game == null) { return null; }
game.playerCards().add(drawCard()); game.playerCards().add(drawCard());
var sum = calculateSum(game.playerCards()); var sum = calculateSum(game.playerCards());
var over = sum > 21; var over = sum > 21;
if (over) activeGames.remove(userId); if (over) { activeGames.remove(userId); }
return buildState( return buildState(
game.playerCards(), game.playerCards(),
@ -74,7 +74,7 @@ public class BlackjackService {
public BlackjackState stand(final String userId) { public BlackjackState stand(final String userId) {
var game = activeGames.remove(userId); var game = activeGames.remove(userId);
if (game == null) return null; if (game == null) { return null; }
var dealerCards = new ArrayList<>(game.dealerCards()); var dealerCards = new ArrayList<>(game.dealerCards());
while (calculateSum(dealerCards) < 16) { while (calculateSum(dealerCards) < 16) {
@ -92,7 +92,7 @@ public class BlackjackService {
} }
private void creditUser(final String userId, final long amount) { private void creditUser(final String userId, final long amount) {
if (amount <= 0) return; if (amount <= 0) { return; }
var account = repository.getAccount(userId); var account = repository.getAccount(userId);
repository.save(account.withCash(account.getCash() + amount)); repository.save(account.withCash(account.getCash() + amount));
} }

View file

@ -25,7 +25,7 @@ public class JobService {
public void setJob(final String userId, String jobName) { public void setJob(final String userId, String jobName) {
Job job = Job.fromName(jobName); Job job = Job.fromName(jobName);
if (job == null) return; if (job == null) { return; }
EconomyAccount account = repository.getAccount(userId); EconomyAccount account = repository.getAccount(userId);
EconomyAccount updated = new EconomyAccountBuilder(account).job(job.name()).build(); EconomyAccount updated = new EconomyAccountBuilder(account).job(job.name()).build();
repository.save(updated); repository.save(updated);
@ -34,15 +34,15 @@ public class JobService {
public WorkResult work(final String userId, final int userLevel) { public WorkResult work(final String userId, final int userLevel) {
EconomyAccount account = repository.getAccount(userId); EconomyAccount account = repository.getAccount(userId);
String jobName = account.getJob(); String jobName = account.getJob();
if (jobName == null) return null; if (jobName == null) { return null; }
Job job = Job.fromName(jobName); Job job = Job.fromName(jobName);
if (job == null) return null; if (job == null) { return null; }
if (userLevel < job.getRequiredLevel()) return null; if (userLevel < job.getRequiredLevel()) { return null; }
if (account.getLastWork() != null) { if (account.getLastWork() != null) {
long elapsed = System.currentTimeMillis() - Long.parseLong(account.getLastWork()); long elapsed = System.currentTimeMillis() - Long.parseLong(account.getLastWork());
if (elapsed < WORK_COOLDOWN) return null; if (elapsed < WORK_COOLDOWN) { return null; }
} }
var rng = ThreadLocalRandom.current(); var rng = ThreadLocalRandom.current();
@ -79,7 +79,7 @@ public class JobService {
public String getCurrentJob(final String userId) { public String getCurrentJob(final String userId) {
EconomyAccount account = repository.getAccount(userId); EconomyAccount account = repository.getAccount(userId);
String jobName = account.getJob(); String jobName = account.getJob();
if (jobName == null) return null; if (jobName == null) { return null; }
Job job = Job.fromName(jobName); Job job = Job.fromName(jobName);
return job != null ? job.getDisplayName() : null; return job != null ? job.getDisplayName() : null;
} }

View file

@ -25,9 +25,9 @@ public class SlotService {
} }
public SlotResult spin(final String userId, final long bet) { public SlotResult spin(final String userId, final long bet) {
if (bet <= 0) return null; if (bet <= 0) { return null; }
EconomyAccount account = repository.getAccount(userId); EconomyAccount account = repository.getAccount(userId);
if (account.getCash() < bet) return null; if (account.getCash() < bet) { return null; }
repository.save(account.withCash(account.getCash() - bet)); repository.save(account.withCash(account.getCash() - bet));
@ -56,7 +56,7 @@ public class SlotService {
int cumulative = 0; int cumulative = 0;
for (int i = 0; i < EMOJIS.length; i++) { for (int i = 0; i < EMOJIS.length; i++) {
cumulative += WEIGHTS[i]; cumulative += WEIGHTS[i];
if (roll < cumulative) return EMOJIS[i]; if (roll < cumulative) { return EMOJIS[i]; }
} }
return EMOJIS[EMOJIS.length - 1]; return EMOJIS[EMOJIS.length - 1];
} }

View file

@ -67,7 +67,7 @@ public class GlazbobaCommand implements Command {
.map(role -> role.getName()) .map(role -> role.getName())
.limit(10) .limit(10)
.collect(Collectors.joining(", ")); .collect(Collectors.joining(", "));
if (roles.isEmpty()) roles = "Нет ролей"; if (roles.isEmpty()) { roles = "Нет ролей"; }
String activities = String activities =
target.getActivities().isEmpty() target.getActivities().isEmpty()

View file

@ -102,7 +102,7 @@ public abstract class AbstractImageCommand implements Command {
// ── Вспомогательное ────────────────────────────────────────────────────────── // ── Вспомогательное ──────────────────────────────────────────────────────────
protected static ParseResult parseArgs(final List<String> args) { protected static ParseResult parseArgs(final List<String> args) {
if (args.isEmpty()) return new ParseResult(DEFAULT_FETCH, ""); if (args.isEmpty()) { return new ParseResult(DEFAULT_FETCH, ""); }
try { try {
int count = Integer.parseInt(args.get(0)); int count = Integer.parseInt(args.get(0));
count = Math.max(1, Math.min(count, MAX_FETCH)); count = Math.max(1, Math.min(count, MAX_FETCH));

View file

@ -32,7 +32,7 @@ public class ImageNavigationHandler extends ListenerAdapter {
@Override @Override
public void onButtonInteraction(final ButtonInteractionEvent event) { public void onButtonInteraction(final ButtonInteractionEvent event) {
String id = event.getComponentId(); String id = event.getComponentId();
if (!id.startsWith(PREFIX)) return; if (!id.startsWith(PREFIX)) { return; }
String direction = id.substring(PREFIX.length()); String direction = id.substring(PREFIX.length());
String messageId = event.getMessageId(); String messageId = event.getMessageId();
@ -77,7 +77,7 @@ public class ImageNavigationHandler extends ListenerAdapter {
// ── Назад ──────────────────────────────────────────────────────────────────── // ── Назад ────────────────────────────────────────────────────────────────────
private void handlePrev(final ButtonInteractionEvent event, final ImageSession session, final String messageId) { private void handlePrev(final ButtonInteractionEvent event, final ImageSession session, final String messageId) {
if (!session.hasPrev()) return; if (!session.hasPrev()) { return; }
logger.debug("nav: prev page={}/{}", session.page() - 1, session.totalPages()); logger.debug("nav: prev page={}/{}", session.page() - 1, session.totalPages());
ImageSession updated = session.withPage(session.page() - 1); ImageSession updated = session.withPage(session.page() - 1);
sessionManager.update(messageId, updated); sessionManager.update(messageId, updated);

View file

@ -66,7 +66,7 @@ public class ImageService {
urls.add(imageUrl); urls.add(imageUrl);
} }
} }
if (urls.size() >= limit) break; if (urls.size() >= limit) { break; }
} }
return urls; return urls;
} catch (IOException e) { } catch (IOException e) {
@ -135,7 +135,7 @@ public class ImageService {
} }
urls.add(fileUrl); urls.add(fileUrl);
} }
if (urls.size() >= limit) break; if (urls.size() >= limit) { break; }
} }
return urls; return urls;
} catch (IOException e) { } catch (IOException e) {
@ -145,7 +145,7 @@ public class ImageService {
} }
private String encodeTags(String tags) { private String encodeTags(String tags) {
if (tags == null || tags.isBlank()) return ""; if (tags == null || tags.isBlank()) { return ""; }
return tags.trim().replace(" ", "+").replace("#", "%23"); return tags.trim().replace(" ", "+").replace("#", "%23");
} }
} }

View file

@ -18,7 +18,7 @@ public class ImageSessionManager {
public ImageSession get(final String messageId) { public ImageSession get(final String messageId) {
ImageSession session = sessions.get(messageId); ImageSession session = sessions.get(messageId);
if (session == null) return null; if (session == null) { return null; }
if (System.currentTimeMillis() - session.createdAt() > SESSION_TTL) { if (System.currentTimeMillis() - session.createdAt() > SESSION_TTL) {
sessions.remove(messageId); sessions.remove(messageId);
return null; return null;

View file

@ -34,9 +34,9 @@ public final class ImageEmbedHelper {
} }
if (!descUsed) { if (!descUsed) {
String desc = ""; String desc = "";
if (!tagsStr.isBlank()) desc = tagsStr; if (!tagsStr.isBlank()) { desc = tagsStr; }
if (isVideo) { if (isVideo) {
if (!desc.isEmpty()) desc += "\n"; if (!desc.isEmpty()) { desc += "\n"; }
desc += "🎬 [" + ext.toUpperCase() + "](" + url + ")"; desc += "🎬 [" + ext.toUpperCase() + "](" + url + ")";
} }
if (!desc.isEmpty()) { if (!desc.isEmpty()) {
@ -67,9 +67,9 @@ public final class ImageEmbedHelper {
} }
if (!descUsed) { if (!descUsed) {
String desc = ""; String desc = "";
if (!tagsStr.isBlank()) desc = tagsStr; if (!tagsStr.isBlank()) { desc = tagsStr; }
if (isVideoExt(lastExt)) { if (isVideoExt(lastExt)) {
if (!desc.isEmpty()) desc += "\n"; if (!desc.isEmpty()) { desc += "\n"; }
desc += "🎬 [" + lastExt.toUpperCase() + "](" + lastUrl + ")"; desc += "🎬 [" + lastExt.toUpperCase() + "](" + lastUrl + ")";
} }
if (!desc.isEmpty()) { if (!desc.isEmpty()) {
@ -93,12 +93,12 @@ public final class ImageEmbedHelper {
} }
public static String formatTags(String tags) { public static String formatTags(String tags) {
if (tags == null || tags.isBlank()) return ""; if (tags == null || tags.isBlank()) { return ""; }
String[] parts = tags.split(" "); String[] parts = tags.split(" ");
int count = Math.min(parts.length, 10); int count = Math.min(parts.length, 10);
StringBuilder sb = new StringBuilder("**Теги:** "); StringBuilder sb = new StringBuilder("**Теги:** ");
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
if (i > 0) sb.append(" "); if (i > 0) { sb.append(" "); }
sb.append("`").append(parts[i]).append("`"); sb.append("`").append(parts[i]).append("`");
} }
if (parts.length > 10) { if (parts.length > 10) {
@ -113,9 +113,9 @@ public final class ImageEmbedHelper {
private static String extension(final String url) { private static String extension(final String url) {
int dot = url.lastIndexOf('.'); int dot = url.lastIndexOf('.');
if (dot < 0 || dot >= url.length() - 1) return ""; if (dot < 0 || dot >= url.length() - 1) { return ""; }
int end = url.indexOf('?', dot); int end = url.indexOf('?', dot);
if (end < 0) end = url.length(); if (end < 0) { end = url.length(); }
return url.substring(dot + 1, end).toLowerCase(); return url.substring(dot + 1, end).toLowerCase();
} }

View file

@ -49,10 +49,10 @@ public class InfoCommand implements Command {
private void showServerInfo(final CommandContext context) { private void showServerInfo(final CommandContext context) {
Guild guild = context.getGuild(); Guild guild = context.getGuild();
if (guild == null) return; if (guild == null) { return; }
String iconUrl = guild.getIconUrl(); String iconUrl = guild.getIconUrl();
if (iconUrl == null) iconUrl = ""; if (iconUrl == null) { iconUrl = ""; }
context context
.getChannel() .getChannel()
@ -80,7 +80,7 @@ public class InfoCommand implements Command {
private void showUserInfo(final CommandContext context) { private void showUserInfo(final CommandContext context) {
Member member = context.getAuthor(); Member member = context.getAuthor();
if (member == null) return; if (member == null) { return; }
User user = member.getUser(); User user = member.getUser();

View file

@ -77,8 +77,8 @@ public class UserStats {
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) return true; if (this == o) { return true; }
if (o == null || getClass() != o.getClass()) return false; if (o == null || getClass() != o.getClass()) { return false; }
UserStats userStats = (UserStats) o; UserStats userStats = (UserStats) o;
return Objects.equals(userId, userStats.userId); return Objects.equals(userId, userStats.userId);
} }

View file

@ -31,7 +31,7 @@ public class ResetLevelsButtonHandler extends ListenerAdapter {
if (buttonId.startsWith(PREFIX_CONFIRM)) { if (buttonId.startsWith(PREFIX_CONFIRM)) {
String authorId = buttonId.substring(PREFIX_CONFIRM.length()); String authorId = buttonId.substring(PREFIX_CONFIRM.length());
if (authorId.isEmpty()) return; if (authorId.isEmpty()) { return; }
if (!event.getUser().getId().equals(authorId)) { if (!event.getUser().getId().equals(authorId)) {
event event
.reply("❌ Только инициатор команды может подтвердить действие!") .reply("❌ Только инициатор команды может подтвердить действие!")
@ -74,7 +74,7 @@ public class ResetLevelsButtonHandler extends ListenerAdapter {
} }
} else if (buttonId.startsWith(PREFIX_CANCEL)) { } else if (buttonId.startsWith(PREFIX_CANCEL)) {
String authorId = buttonId.substring(PREFIX_CANCEL.length()); String authorId = buttonId.substring(PREFIX_CANCEL.length());
if (authorId.isEmpty()) return; if (authorId.isEmpty()) { return; }
if (!event.getUser().getId().equals(authorId)) { if (!event.getUser().getId().equals(authorId)) {
event event
.reply("❌ Только инициатор команды может отменить действие!") .reply("❌ Только инициатор команды может отменить действие!")

View file

@ -29,7 +29,7 @@ public class UserStatsMapper {
} }
public static int clampLimit(final int limit) { public static int clampLimit(final int limit) {
if (limit <= 0) return 1; if (limit <= 0) { return 1; }
return Math.min(limit, MAX_TOP); return Math.min(limit, MAX_TOP);
} }
@ -88,7 +88,7 @@ public class UserStatsMapper {
} }
public static int findRankByLevelOrder(final Database database, final String userId) { public static int findRankByLevelOrder(final Database database, final String userId) {
if (!exists(database, userId)) return -1; if (!exists(database, userId)) { return -1; }
String sql = String sql =
""" """
SELECT COUNT(*) + 1 SELECT COUNT(*) + 1
@ -104,7 +104,7 @@ public class UserStatsMapper {
try (final PreparedStatement stmt = database.prepare(sql)) { try (final PreparedStatement stmt = database.prepare(sql)) {
stmt.setString(1, userId); stmt.setString(1, userId);
try (final ResultSet rs = stmt.executeQuery()) { try (final ResultSet rs = stmt.executeQuery()) {
if (rs.next()) return rs.getInt(1); if (rs.next()) { return rs.getInt(1); }
} }
} catch (SQLException e) { } catch (SQLException e) {
logger.error("Ошибка вычисления ранга по уровню для {}", userId, e); logger.error("Ошибка вычисления ранга по уровню для {}", userId, e);

View file

@ -28,7 +28,7 @@ public class LevelRoleService {
public String getRoleForLevel(final int level) { public String getRoleForLevel(final int level) {
String configRole = configRepository.get("level_role_" + level); String configRole = configRepository.get("level_role_" + level);
if (configRole != null) return configRole; if (configRole != null) { return configRole; }
return DEFAULT_ROLES.get(level); return DEFAULT_ROLES.get(level);
} }
@ -42,7 +42,7 @@ public class LevelRoleService {
public String assignRewardRole(final Member member, final int newLevel) { public String assignRewardRole(final Member member, final int newLevel) {
String roleName = getRoleForLevel(newLevel); String roleName = getRoleForLevel(newLevel);
if (roleName == null) return null; if (roleName == null) { return null; }
List<Role> roles = member.getGuild().getRolesByName(roleName, true); List<Role> roles = member.getGuild().getRolesByName(roleName, true);
if (roles.isEmpty()) { if (roles.isEmpty()) {

View file

@ -18,10 +18,10 @@ public class MessageCooldownService {
public boolean canReceiveXP(final String userId) { public boolean canReceiveXP(final String userId) {
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
Long lastTime = lastMessageTimes.get(userId); Long lastTime = lastMessageTimes.get(userId);
if (lastTime != null && (now - lastTime) < MESSAGE_COOLDOWN_MS) return false; if (lastTime != null && (now - lastTime) < MESSAGE_COOLDOWN_MS) { return false; }
if (lastTime != null) return true; if (lastTime != null) { return true; }
long dbTime = repository.getUserStats(userId).getLastMessageTime(); long dbTime = repository.getUserStats(userId).getLastMessageTime();
if (dbTime != 0) lastMessageTimes.put(userId, dbTime); if (dbTime != 0) { lastMessageTimes.put(userId, dbTime); }
return dbTime == 0 || (now - dbTime) >= MESSAGE_COOLDOWN_MS; return dbTime == 0 || (now - dbTime) >= MESSAGE_COOLDOWN_MS;
} }
@ -34,7 +34,7 @@ public class MessageCooldownService {
Long lastTime = lastMessageTimes.get(userId); Long lastTime = lastMessageTimes.get(userId);
if (lastTime == null) { if (lastTime == null) {
long dbTime = repository.getUserStats(userId).getLastMessageTime(); long dbTime = repository.getUserStats(userId).getLastMessageTime();
if (dbTime == 0) return 0; if (dbTime == 0) { return 0; }
lastMessageTimes.put(userId, dbTime); lastMessageTimes.put(userId, dbTime);
lastTime = dbTime; lastTime = dbTime;
} }

View file

@ -85,10 +85,10 @@ public class LevelUpNotifier {
/** Получить цвет для уровня */ /** Получить цвет для уровня */
private Color getColorForLevel(final int level) { private Color getColorForLevel(final int level) {
if (level >= 50) return Color.decode("#FFD700"); // Золотой if (level >= 50) { return Color.decode("#FFD700"); } // Золотой
if (level >= 30) return Color.decode("#E74C3C"); // Красный if (level >= 30) { return Color.decode("#E74C3C"); } // Красный
if (level >= 20) return Color.decode("#9B59B6"); // Фиолетовый if (level >= 20) { return Color.decode("#9B59B6"); } // Фиолетовый
if (level >= 10) return Color.decode("#3498DB"); // Синий if (level >= 10) { return Color.decode("#3498DB"); } // Синий
return Color.decode("#2ECC71"); // Зеленый return Color.decode("#2ECC71"); // Зеленый
} }

View file

@ -42,7 +42,7 @@ public class VoiceTracker extends ListenerAdapter implements Lifecycle {
public void onGuildVoiceUpdate(final GuildVoiceUpdateEvent event) { public void onGuildVoiceUpdate(final GuildVoiceUpdateEvent event) {
Member member = event.getMember(); Member member = event.getMember();
String userId = member.getId(); String userId = member.getId();
if (member.getUser().isBot()) return; if (member.getUser().isBot()) { return; }
if (event.getChannelJoined() != null && event.getChannelLeft() == null) { if (event.getChannelJoined() != null && event.getChannelLeft() == null) {
voiceJoinTimes.put(userId, System.currentTimeMillis()); voiceJoinTimes.put(userId, System.currentTimeMillis());
@ -90,7 +90,7 @@ public class VoiceTracker extends ListenerAdapter implements Lifecycle {
public void shutdown() { public void shutdown() {
scheduler.shutdown(); scheduler.shutdown();
try { try {
if (!scheduler.awaitTermination(5, TimeUnit.SECONDS)) scheduler.shutdownNow(); if (!scheduler.awaitTermination(5, TimeUnit.SECONDS)) { scheduler.shutdownNow(); }
} catch (InterruptedException e) { } catch (InterruptedException e) {
scheduler.shutdownNow(); scheduler.shutdownNow();
Thread.currentThread().interrupt(); Thread.currentThread().interrupt();

View file

@ -74,9 +74,9 @@ public class MuteCommand implements Command {
return; return;
} }
var target = mentioned.get(0); var target = mentioned.get(0);
if (!validateMute(ctx, target, mod, g)) return; if (!validateMute(ctx, target, mod, g)) { return; }
var parsed = parseDurationAndReason(ctx); var parsed = parseDurationAndReason(ctx);
if (parsed == null) return; if (parsed == null) { return; }
Role muteRole; Role muteRole;
try { try {
muteRole = muteRoleService.getOrCreateMuteRole(g); muteRole = muteRoleService.getOrCreateMuteRole(g);
@ -118,7 +118,7 @@ public class MuteCommand implements Command {
MuteDurationParser.MuteDuration dur = null; MuteDurationParser.MuteDuration dur = null;
String durToken = null; String durToken = null;
for (String a : ctx.getArgs()) { for (String a : ctx.getArgs()) {
if (a.startsWith("<@")) continue; if (a.startsWith("<@")) { continue; }
try { try {
dur = MuteDurationParser.parse(a); dur = MuteDurationParser.parse(a);
durToken = a; durToken = a;
@ -133,12 +133,12 @@ public class MuteCommand implements Command {
boolean past = false; boolean past = false;
var sb = new StringBuilder(); var sb = new StringBuilder();
for (String a : ctx.getArgs()) { for (String a : ctx.getArgs()) {
if (a.startsWith("<@")) continue; if (a.startsWith("<@")) { continue; }
if (!past) { if (!past) {
if (a.equals(durToken)) past = true; if (a.equals(durToken)) { past = true; }
continue; continue;
} }
if (!sb.isEmpty()) sb.append(' '); if (!sb.isEmpty()) { sb.append(' '); }
sb.append(a); sb.append(a);
} }
String tmp = sb.toString().trim(); String tmp = sb.toString().trim();
@ -207,9 +207,9 @@ public class MuteCommand implements Command {
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) { 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"); var logId = configRepo.get("moderation.log_channel_id");
if (logId == null) return; if (logId == null) { return; }
var log = g.getTextChannelById(logId); var log = g.getTextChannelById(logId);
if (log == null) return; if (log == null) { return; }
boolean permanent = dur.permanent(); boolean permanent = dur.permanent();
log.sendMessageEmbeds( log.sendMessageEmbeds(
new EmbedBuilder() new EmbedBuilder()

View file

@ -64,7 +64,7 @@ public final class PunishCommand {
@Override @Override
public void execute(final CommandContext ctx) { public void execute(final CommandContext ctx) {
var t = modTarget(ctx, perm, action); var t = modTarget(ctx, perm, action);
if (t == null) return; if (t == null) { return; }
var reason = var reason =
ctx.getArgs().size() > 1 ctx.getArgs().size() > 1
? String.join(" ", ctx.getArgs().subList(1, ctx.getArgs().size())) ? String.join(" ", ctx.getArgs().subList(1, ctx.getArgs().size()))

View file

@ -117,14 +117,14 @@ public class UnmuteCommand implements Command {
var logId = configRepo.get("moderation.log_channel_id"); var logId = configRepo.get("moderation.log_channel_id");
if (logId != null) { if (logId != null) {
var log = g.getTextChannelById(logId); var log = g.getTextChannelById(logId);
if (log == null) return; if (log == null) { return; }
var eb = var eb =
new EmbedBuilder() new EmbedBuilder()
.setTitle("🔊 Размут") .setTitle("🔊 Размут")
.setColor(Color.GREEN) .setColor(Color.GREEN)
.addField("Участник", t.getAsMention() + " (`" + t.getId() + "`)", false) .addField("Участник", t.getAsMention() + " (`" + t.getId() + "`)", false)
.addField("Модератор", mod.getAsMention(), false); .addField("Модератор", mod.getAsMention(), false);
if (caseId > 0) eb.addField("Кейс", "`" + caseId + "`", true); if (caseId > 0) { eb.addField("Кейс", "`" + caseId + "`", true); }
eb.addField("Причина", trunc(reason, 1000), false) eb.addField("Причина", trunc(reason, 1000), false)
.setTimestamp(OffsetDateTime.now()); .setTimestamp(OffsetDateTime.now());
log.sendMessageEmbeds(eb.build()).queue(s -> {}, e -> {}); log.sendMessageEmbeds(eb.build()).queue(s -> {}, e -> {});

View file

@ -57,7 +57,7 @@ public class SwapCommand implements Command {
int swapCount; int swapCount;
try { try {
swapCount = Integer.parseInt(ctx.getArgs().get(1)); swapCount = Integer.parseInt(ctx.getArgs().get(1));
if (swapCount < 1 || swapCount > 5) throw new NumberFormatException(); if (swapCount < 1 || swapCount > 5) { throw new NumberFormatException(); }
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
ModerationHelper.error(ctx, "Количество должно быть от 1 до 5"); ModerationHelper.error(ctx, "Количество должно быть от 1 до 5");
return; return;

View file

@ -63,7 +63,7 @@ public class ClearCommand implements Command {
} }
} }
if (!(ctx.getChannel() instanceof TextChannel channel)) return; if (!(ctx.getChannel() instanceof TextChannel channel)) { return; }
final Member finalTarget = target; final Member finalTarget = target;
channel channel
.getHistory() .getHistory()

View file

@ -17,7 +17,7 @@ public class ClearSlashCommands extends ListenerAdapter {
@Override @Override
public void onSlashCommandInteraction(@NotNull final SlashCommandInteractionEvent event) { public void onSlashCommandInteraction(@NotNull final SlashCommandInteractionEvent event) {
if (!event.getName().equals("clear")) return; if (!event.getName().equals("clear")) { return; }
var member = event.getMember(); var member = event.getMember();
if (member == null || !member.hasPermission(Permission.MESSAGE_MANAGE)) { if (member == null || !member.hasPermission(Permission.MESSAGE_MANAGE)) {

View file

@ -63,7 +63,7 @@ public class WarnCommand implements Command {
@Override @Override
public void execute(final CommandContext ctx) { public void execute(final CommandContext ctx) {
var t = validateInput(ctx); var t = validateInput(ctx);
if (t != null) saveWarning(ctx, t); if (t != null) { saveWarning(ctx, t); }
} }
private Member validateInput(final CommandContext ctx) { private Member validateInput(final CommandContext ctx) {
@ -98,7 +98,7 @@ public class WarnCommand implements Command {
var g = ctx.getGuild(); var g = ctx.getGuild();
var mod = ctx.getAuthor(); var mod = ctx.getAuthor();
var reason = ctx.getArgs().stream().skip(1).collect(Collectors.joining(" ")).trim(); var reason = ctx.getArgs().stream().skip(1).collect(Collectors.joining(" ")).trim();
if (reason.isEmpty()) reason = "Без причины"; if (reason.isEmpty()) { reason = "Без причины"; }
long id = warnings.insert(g.getId(), t.getId(), mod.getId(), reason); long id = warnings.insert(g.getId(), t.getId(), mod.getId(), reason);
if (id < 0) { if (id < 0) {
ModerationHelper.error(ctx, "Не удалось сохранить предупреждение"); ModerationHelper.error(ctx, "Не удалось сохранить предупреждение");
@ -126,9 +126,9 @@ public class WarnCommand implements Command {
private void logWarn(final Guild g, final Member mod, final Member t, final long warnId, String reason, final 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"); var logId = configRepo.get("moderation.log_channel_id");
if (logId == null) return; if (logId == null) { return; }
var log = g.getTextChannelById(logId); var log = g.getTextChannelById(logId);
if (log == null) return; if (log == null) { return; }
log.sendMessageEmbeds( log.sendMessageEmbeds(
new EmbedBuilder() new EmbedBuilder()
.setTitle("⚠️ Предупреждение (!warn)") .setTitle("⚠️ Предупреждение (!warn)")
@ -151,12 +151,12 @@ public class WarnCommand implements Command {
return; return;
} }
var self = g.getMember(g.getJDA().getSelfUser()); var self = g.getMember(g.getJDA().getSelfUser());
if (!self.canInteract(t) || !self.canInteract(muteRole)) return; if (!self.canInteract(t) || !self.canInteract(muteRole)) { return; }
String reason = "Авто-мут: 3+ варна"; String reason = "Авто-мут: 3+ варна";
long untilMs = System.currentTimeMillis() + AUTO_MUTE_HOURS * 3600 * 1000; long untilMs = System.currentTimeMillis() + AUTO_MUTE_HOURS * 3600 * 1000;
long durSec = AUTO_MUTE_HOURS * 3600; long durSec = AUTO_MUTE_HOURS * 3600;
long caseId = cases.insert(g.getId(), "MUTE", t.getId(), mod.getId(), reason, durSec, untilMs); long caseId = cases.insert(g.getId(), "MUTE", t.getId(), mod.getId(), reason, durSec, untilMs);
if (caseId < 0) return; if (caseId < 0) { return; }
activeMutes.upsert(g.getId(), t.getId(), untilMs, caseId); activeMutes.upsert(g.getId(), t.getId(), untilMs, caseId);
muteScheduler.cancelPending(g.getId(), t.getId()); muteScheduler.cancelPending(g.getId(), t.getId());
g.addRoleToMember(t, muteRole) g.addRoleToMember(t, muteRole)

View file

@ -46,7 +46,7 @@ public class WarningsHistoryCommand implements Command {
return; return;
} }
var viewer = ctx.getAuthor(); var viewer = ctx.getAuthor();
if (viewer == null) return; if (viewer == null) { return; }
var mentions = ctx.getMessage().getMentions().getMembers(); var mentions = ctx.getMessage().getMentions().getMembers();
Member target; Member target;
if (mentions.isEmpty()) { if (mentions.isEmpty()) {

View file

@ -72,8 +72,8 @@ public final class LogEmbeds {
.addField("Пользователь", userMention, true) .addField("Пользователь", userMention, true)
.addField("Модератор", moderatorMention, true) .addField("Модератор", moderatorMention, true)
.setColor(muted ? Color.ORANGE : Color.GREEN); .setColor(muted ? Color.ORANGE : Color.GREEN);
if (muted && endEpoch != null) eb.addField("До", "<t:" + endEpoch + ":R>", true); if (muted && endEpoch != null) { eb.addField("До", "<t:" + endEpoch + ":R>", true); }
if (reason != null) eb.addField("Причина", reason, false); if (reason != null) { eb.addField("Причина", reason, false); }
return eb; return eb;
} }
@ -84,7 +84,7 @@ public final class LogEmbeds {
.addField("Пользователь", userMention, true) .addField("Пользователь", userMention, true)
.addField("Канал", channelMention, true) .addField("Канал", channelMention, true)
.setColor(muted ? Color.ORANGE : Color.GREEN); .setColor(muted ? Color.ORANGE : Color.GREEN);
if (moderatorMention != null) eb.addField("Модератор", moderatorMention, false); if (moderatorMention != null) { eb.addField("Модератор", moderatorMention, false); }
return eb; return eb;
} }
@ -95,12 +95,12 @@ public final class LogEmbeds {
.addField("Пользователь", userMention, true) .addField("Пользователь", userMention, true)
.addField("Канал", channelMention, true) .addField("Канал", channelMention, true)
.setColor(deafened ? Color.ORANGE : Color.GREEN); .setColor(deafened ? Color.ORANGE : Color.GREEN);
if (moderatorMention != null) eb.addField("Модератор", moderatorMention, false); if (moderatorMention != null) { eb.addField("Модератор", moderatorMention, false); }
return eb; return eb;
} }
private static String truncate(final String text, final int maxLen) { private static String truncate(final String text, final int maxLen) {
if (text.length() <= maxLen) return text; if (text.length() <= maxLen) { return text; }
return text.substring(0, maxLen) + "..."; return text.substring(0, maxLen) + "...";
} }
} }

View file

@ -35,12 +35,12 @@ public class ModerationLogger extends ListenerAdapter {
private void handle(final Guild g, final ActionType t, final int l, final Function<List<AuditLogEntry>, EmbedBuilder> fn) { private void handle(final Guild g, final ActionType t, final int l, final Function<List<AuditLogEntry>, EmbedBuilder> fn) {
var log = g.getTextChannelById(configRepo.get("moderation.log_channel_id")); var log = g.getTextChannelById(configRepo.get("moderation.log_channel_id"));
if (log == null) return; if (log == null) { return; }
var al = g.retrieveAuditLogs().type(t).limit(l); var al = g.retrieveAuditLogs().type(t).limit(l);
al.queue( al.queue(
logs -> { logs -> {
var embed = fn.apply(logs); var embed = fn.apply(logs);
if (embed == null) return; if (embed == null) { return; }
log.sendMessageEmbeds(embed.setTimestamp(OffsetDateTime.now()).build()).queue(); log.sendMessageEmbeds(embed.setTimestamp(OffsetDateTime.now()).build()).queue();
}); });
} }
@ -70,7 +70,7 @@ public class ModerationLogger extends ListenerAdapter {
} }
private EmbedBuilder b(final GuildBanEvent ev, final List<AuditLogEntry> l) { private EmbedBuilder b(final GuildBanEvent ev, final List<AuditLogEntry> l) {
if (l.isEmpty()) return null; if (l.isEmpty()) { return null; }
var user = ev.getUser(); var user = ev.getUser();
var e = l.get(0); var e = l.get(0);
var mod = e.getUser() != null ? e.getUser().getAsMention() : "Неизвестно"; var mod = e.getUser() != null ? e.getUser().getAsMention() : "Неизвестно";
@ -83,7 +83,7 @@ public class ModerationLogger extends ListenerAdapter {
} }
private EmbedBuilder ub(final GuildUnbanEvent ev, final List<AuditLogEntry> l) { private EmbedBuilder ub(final GuildUnbanEvent ev, final List<AuditLogEntry> l) {
if (l.isEmpty()) return null; if (l.isEmpty()) { return null; }
var user = ev.getUser(); var user = ev.getUser();
var e = l.get(0); var e = l.get(0);
var mod = e.getUser() != null ? e.getUser().getAsMention() : "Неизвестно"; var mod = e.getUser() != null ? e.getUser().getAsMention() : "Неизвестно";
@ -95,9 +95,9 @@ public class ModerationLogger extends ListenerAdapter {
} }
private EmbedBuilder k(final GuildMemberRemoveEvent ev, final List<AuditLogEntry> l) { private EmbedBuilder k(final GuildMemberRemoveEvent ev, final List<AuditLogEntry> l) {
if (l.isEmpty()) return null; if (l.isEmpty()) { return null; }
var e = l.get(0); var e = l.get(0);
if (!e.getTargetId().equals(ev.getUser().getId())) return null; if (!e.getTargetId().equals(ev.getUser().getId())) { return null; }
var mod = e.getUser() != null ? e.getUser().getAsMention() : "Неизвестно"; var mod = e.getUser() != null ? e.getUser().getAsMention() : "Неизвестно";
var reason = e.getReason() != null ? e.getReason() : "Не указана"; var reason = e.getReason() != null ? e.getReason() : "Не указана";
return LogEmbeds.kick(ev.getUser().getAsMention(), mod, reason, ev.getUser().getAvatarUrl()); return LogEmbeds.kick(ev.getUser().getAsMention(), mod, reason, ev.getUser().getAvatarUrl());
@ -110,7 +110,7 @@ public class ModerationLogger extends ListenerAdapter {
private EmbedBuilder t(final GuildMemberUpdateTimeOutEvent e, boolean muted, final List<AuditLogEntry> l) { private EmbedBuilder t(final GuildMemberUpdateTimeOutEvent e, boolean muted, final List<AuditLogEntry> l) {
var entry = findEntry(l, e.getUser().getId()); var entry = findEntry(l, e.getUser().getId());
if (entry == null) return null; if (entry == null) { return null; }
var mod = entry.getUser() != null ? entry.getUser().getAsMention() : "Неизвестно"; var mod = entry.getUser() != null ? entry.getUser().getAsMention() : "Неизвестно";
var end = muted ? e.getNewTimeOutEnd().toEpochSecond() : null; var end = muted ? e.getNewTimeOutEnd().toEpochSecond() : null;
return LogEmbeds.timeout(e.getUser().getAsMention(), mod, muted, end, entry.getReason()); return LogEmbeds.timeout(e.getUser().getAsMention(), mod, muted, end, entry.getReason());
@ -144,7 +144,7 @@ public class ModerationLogger extends ListenerAdapter {
private AuditLogEntry findEntry(final List<AuditLogEntry> l, final String targetId, final String... key) { private AuditLogEntry findEntry(final List<AuditLogEntry> l, final String targetId, final String... key) {
var s = l.stream().filter(e -> targetId.equals(e.getTargetId())); var s = l.stream().filter(e -> targetId.equals(e.getTargetId()));
if (key.length > 0) s = s.filter(e -> e.getChangeByKey(key[0]) != null); if (key.length > 0) { s = s.filter(e -> e.getChangeByKey(key[0]) != null); }
return s.findFirst().orElse(null); return s.findFirst().orElse(null);
} }
} }

View file

@ -30,7 +30,7 @@ public class MusicSlashCommands extends ListenerAdapter {
@Override @Override
public void onGuildReady(@NotNull final GuildReadyEvent event) { public void onGuildReady(@NotNull final GuildReadyEvent event) {
if (registered) return; if (registered) { return; }
registered = true; registered = true;
var jda = event.getJDA(); var jda = event.getJDA();

View file

@ -35,7 +35,7 @@ public class FilterCommands {
} }
private static boolean checkChannel(GuildMusicManager m, final CommandContext ctx) { private static boolean checkChannel(GuildMusicManager m, final CommandContext ctx) {
if (!m.getLink().isEmpty()) return true; if (!m.getLink().isEmpty()) { return true; }
ctx.getChannel() ctx.getChannel()
.sendMessageEmbeds(EmbedTemplates.error("Не в канале", "Бот не в голосовом канале.")) .sendMessageEmbeds(EmbedTemplates.error("Не в канале", "Бот не в голосовом канале."))
.queue(); .queue();
@ -76,7 +76,7 @@ public class FilterCommands {
@Override @Override
public void execute(final CommandContext ctx) { public void execute(final CommandContext ctx) {
var m = mgr(pm, ctx); var m = mgr(pm, ctx);
if (!checkChannel(m, ctx)) return; if (!checkChannel(m, ctx)) { return; }
if (mode == 2) { if (mode == 2) {
m.getScheduler().resetFilters(); m.getScheduler().resetFilters();
ctx.getChannel() ctx.getChannel()
@ -161,12 +161,12 @@ public class FilterCommands {
@Override @Override
public void execute(final CommandContext ctx) { public void execute(final CommandContext ctx) {
var m = mgr(pm, ctx); var m = mgr(pm, ctx);
if (!checkChannel(m, ctx)) return; if (!checkChannel(m, ctx)) { return; }
boolean enabled = boolean enabled =
isNight isNight
? !m.getScheduler().filterState.isNightcore() ? !m.getScheduler().filterState.isNightcore()
: !m.getScheduler().filterState.isVaporwave(); : !m.getScheduler().filterState.isVaporwave();
if (isNight) m.getScheduler().setNightcore(enabled); if (isNight) { m.getScheduler().setNightcore(enabled); }
else m.getScheduler().setVaporwave(enabled); else m.getScheduler().setVaporwave(enabled);
ctx.getChannel() ctx.getChannel()
.sendMessageEmbeds( .sendMessageEmbeds(

View file

@ -92,7 +92,7 @@ public class QueueCommands {
var show = Math.min(q.size(), 10); var show = Math.min(q.size(), 10);
for (var i = 0; i < show; i++) for (var i = 0; i < show; i++)
sb.append(String.format("`%d.` **%s**\n", i + 1, q.get(i).getInfo().getTitle())); sb.append(String.format("`%d.` **%s**\n", i + 1, q.get(i).getInfo().getTitle()));
if (q.size() > show) sb.append("... и ещё **").append(q.size() - show).append("** треков"); if (q.size() > show) { sb.append("... и ещё **").append(q.size() - show).append("** треков"); }
embed.addField("В очереди (" + q.size() + ")", sb.toString(), false); embed.addField("В очереди (" + q.size() + ")", sb.toString(), false);
} }
ctx.getChannel().sendMessageEmbeds(embed.build()).queue(); ctx.getChannel().sendMessageEmbeds(embed.build()).queue();
@ -111,7 +111,7 @@ public class QueueCommands {
var ds = dur / 1000 <= 0 ? 1 : dur / 1000; var ds = dur / 1000 <= 0 ? 1 : dur / 1000;
var filled = (int) ((double) pos / dur * 20); var filled = (int) ((double) pos / dur * 20);
var bar = new StringBuilder("\u2503"); var bar = new StringBuilder("\u2503");
for (var i = 0; i < 20; i++) bar.append(i < filled ? "\u2588" : "\u2591"); for (var i = 0; i < 20; i++) { bar.append(i < filled ? "\u2588" : "\u2591"); }
var t0 = String.format("%d:%02d", pos / 1000 / 60, pos / 1000 % 60); var t0 = String.format("%d:%02d", pos / 1000 / 60, pos / 1000 % 60);
var t1 = String.format("%d:%02d", ds / 60, ds % 60); var t1 = String.format("%d:%02d", ds / 60, ds % 60);
var pbar = bar + "\u2503 " + t0 + " / " + t1; var pbar = bar + "\u2503 " + t0 + " / " + t1;

View file

@ -114,7 +114,7 @@ public class LavalinkManager {
} }
public Link getOrCreateLink(final long guildId) { public Link getOrCreateLink(final long guildId) {
if (client == null) throw new IllegalStateException("Lavalink not configured"); if (client == null) { throw new IllegalStateException("Lavalink not configured"); }
return client.getOrCreateLink(guildId); return client.getOrCreateLink(guildId);
} }

View file

@ -21,7 +21,7 @@ public class MusicBotControlHandler {
} }
public void handleSkip(final MessageChannel ch, final Guild guild, final Member member) { public void handleSkip(final MessageChannel ch, final Guild guild, final Member member) {
if (reqVoice(ch, member) == null) return; if (reqVoice(ch, member) == null) { return; }
var s = lavalinkManager.getMusicManager(guild.getIdLong()).getScheduler(); var s = lavalinkManager.getMusicManager(guild.getIdLong()).getScheduler();
if (s.getCurrentTrack() == null) { if (s.getCurrentTrack() == null) {
send(ch, err("Нечего пропускать.")); send(ch, err("Нечего пропускать."));
@ -33,7 +33,7 @@ public class MusicBotControlHandler {
} }
public void handleStop(final MessageChannel ch, final Guild guild, final Member member) { public void handleStop(final MessageChannel ch, final Guild guild, final Member member) {
if (reqVoice(ch, member) == null) return; if (reqVoice(ch, member) == null) { return; }
lavalinkManager.getMusicManager(guild.getIdLong()).stop(); lavalinkManager.getMusicManager(guild.getIdLong()).stop();
guild.getJDA().getDirectAudioController().disconnect(guild); guild.getJDA().getDirectAudioController().disconnect(guild);
send(ch, ok(ERR, "⏹ Остановлено", "Музыка остановлена, очередь очищена.")); send(ch, ok(ERR, "⏹ Остановлено", "Музыка остановлена, очередь очищена."));
@ -48,7 +48,7 @@ public class MusicBotControlHandler {
return; return;
} }
var sb = new StringBuilder(); var sb = new StringBuilder();
if (cur != null) sb.append("**Сейчас:** ").append(cur.getInfo().getTitle()).append("\n"); if (cur != null) { sb.append("**Сейчас:** ").append(cur.getInfo().getTitle()).append("\n"); }
if (!q.isEmpty()) { if (!q.isEmpty()) {
var show = Math.min(q.size(), 10); var show = Math.min(q.size(), 10);
for (var i = 0; i < show; i++) for (var i = 0; i < show; i++)
@ -57,7 +57,7 @@ public class MusicBotControlHandler {
.append(".` ") .append(".` ")
.append(q.get(i).getInfo().getTitle()) .append(q.get(i).getInfo().getTitle())
.append("\n"); .append("\n");
if (q.size() > show) sb.append("... и ещё **").append(q.size() - show).append("** треков"); if (q.size() > show) { sb.append("... и ещё **").append(q.size() - show).append("** треков"); }
} }
send(ch, ok("📜 Очередь", sb.toString())); send(ch, ok("📜 Очередь", sb.toString()));
} }
@ -74,7 +74,7 @@ public class MusicBotControlHandler {
} }
public void handleVolume(final MessageChannel ch, final Guild guild, final Member member, final List<String> args) { public void handleVolume(final MessageChannel ch, final Guild guild, final Member member, final List<String> args) {
if (reqVoice(ch, member) == null) return; if (reqVoice(ch, member) == null) { return; }
var link = lavalinkManager.getClient().getLinkIfCached(guild.getIdLong()); var link = lavalinkManager.getClient().getLinkIfCached(guild.getIdLong());
if (args.isEmpty()) { if (args.isEmpty()) {
send( send(
@ -101,14 +101,14 @@ public class MusicBotControlHandler {
} }
public void handleLeave(final MessageChannel ch, final Guild guild, final Member member) { public void handleLeave(final MessageChannel ch, final Guild guild, final Member member) {
if (reqVoice(ch, member) == null) return; if (reqVoice(ch, member) == null) { return; }
lavalinkManager.getMusicManager(guild.getIdLong()).stop(); lavalinkManager.getMusicManager(guild.getIdLong()).stop();
guild.getJDA().getDirectAudioController().disconnect(guild); guild.getJDA().getDirectAudioController().disconnect(guild);
send(ch, ok(ERR, "👋 Отключился", "Вышел из голосового канала.")); send(ch, ok(ERR, "👋 Отключился", "Вышел из голосового канала."));
} }
public void handleRepeat(final MessageChannel ch, final Guild guild, final Member member) { public void handleRepeat(final MessageChannel ch, final Guild guild, final Member member) {
if (reqVoice(ch, member) == null) return; if (reqVoice(ch, member) == null) { return; }
var s = lavalinkManager.getMusicManager(guild.getIdLong()).getScheduler(); var s = lavalinkManager.getMusicManager(guild.getIdLong()).getScheduler();
var now = !s.isRepeating(); var now = !s.isRepeating();
s.setRepeating(now); s.setRepeating(now);
@ -120,7 +120,7 @@ public class MusicBotControlHandler {
} }
public void handleShuffle(final MessageChannel ch, final Guild guild, final Member member) { public void handleShuffle(final MessageChannel ch, final Guild guild, final Member member) {
if (reqVoice(ch, member) == null) return; if (reqVoice(ch, member) == null) { return; }
var s = lavalinkManager.getMusicManager(guild.getIdLong()).getScheduler(); var s = lavalinkManager.getMusicManager(guild.getIdLong()).getScheduler();
if (s.getQueue().isEmpty()) { if (s.getQueue().isEmpty()) {
send(ch, err("Очередь пуста.")); send(ch, err("Очередь пуста."));
@ -131,7 +131,7 @@ public class MusicBotControlHandler {
} }
public void handleBassboost(final MessageChannel ch, final Guild guild, final Member member, final List<String> args) { public void handleBassboost(final MessageChannel ch, final Guild guild, final Member member, final List<String> args) {
if (reqVoice(ch, member) == null) return; if (reqVoice(ch, member) == null) { return; }
var level = 10; var level = 10;
if (!args.isEmpty()) if (!args.isEmpty())
try { try {
@ -143,7 +143,7 @@ public class MusicBotControlHandler {
} }
public void handleNightcore(final MessageChannel ch, final Guild guild, final Member member) { public void handleNightcore(final MessageChannel ch, final Guild guild, final Member member) {
if (reqVoice(ch, member) == null) return; if (reqVoice(ch, member) == null) { return; }
var s = lavalinkManager.getMusicManager(guild.getIdLong()).getScheduler(); var s = lavalinkManager.getMusicManager(guild.getIdLong()).getScheduler();
var now = !s.filterState.isNightcore(); var now = !s.filterState.isNightcore();
s.setNightcore(now); s.setNightcore(now);
@ -151,7 +151,7 @@ public class MusicBotControlHandler {
} }
public void handleVaporwave(final MessageChannel ch, final Guild guild, final Member member) { public void handleVaporwave(final MessageChannel ch, final Guild guild, final Member member) {
if (reqVoice(ch, member) == null) return; if (reqVoice(ch, member) == null) { return; }
var s = lavalinkManager.getMusicManager(guild.getIdLong()).getScheduler(); var s = lavalinkManager.getMusicManager(guild.getIdLong()).getScheduler();
var now = !s.filterState.isVaporwave(); var now = !s.filterState.isVaporwave();
s.setVaporwave(now); s.setVaporwave(now);
@ -159,13 +159,13 @@ public class MusicBotControlHandler {
} }
public void handleReset(final MessageChannel ch, final Guild guild, final Member member) { public void handleReset(final MessageChannel ch, final Guild guild, final Member member) {
if (reqVoice(ch, member) == null) return; if (reqVoice(ch, member) == null) { return; }
lavalinkManager.getMusicManager(guild.getIdLong()).getScheduler().resetFilters(); lavalinkManager.getMusicManager(guild.getIdLong()).getScheduler().resetFilters();
send(ch, ok("🔄 Сброс", "Фильтры сброшены.")); send(ch, ok("🔄 Сброс", "Фильтры сброшены."));
} }
public void handleEqualizer(final MessageChannel ch, final Guild guild, final Member member, final List<String> args) { public void handleEqualizer(final MessageChannel ch, final Guild guild, final Member member, final List<String> args) {
if (reqVoice(ch, member) == null) return; if (reqVoice(ch, member) == null) { return; }
if (args.size() < 2) { if (args.size() < 2) {
send(ch, err("Укажи band 0-14 и gain -0.25 до 1.0")); send(ch, err("Укажи band 0-14 и gain -0.25 до 1.0"));
return; return;
@ -186,7 +186,7 @@ public class MusicBotControlHandler {
} }
private Member reqVoice(final MessageChannel ch, final Member member) { private Member reqVoice(final MessageChannel ch, final Member member) {
if (member != null && member.getVoiceState().inAudioChannel()) return member; if (member != null && member.getVoiceState().inAudioChannel()) { return member; }
send(ch, err("Зайди в голосовой канал сначала.")); send(ch, err("Зайди в голосовой канал сначала."));
return null; return null;
} }

View file

@ -25,18 +25,18 @@ public class MusicBotListener extends ListenerAdapter {
@Override @Override
public void onMessageReceived(@NotNull final MessageReceivedEvent event) { public void onMessageReceived(@NotNull final MessageReceivedEvent event) {
if (event.getAuthor().isBot()) return; if (event.getAuthor().isBot()) { return; }
String content = event.getMessage().getContentRaw(); String content = event.getMessage().getContentRaw();
if (!content.startsWith(PREFIX)) return; if (!content.startsWith(PREFIX)) { return; }
String[] parts = content.substring(PREFIX.length()).trim().split("\\s+"); String[] parts = content.substring(PREFIX.length()).trim().split("\\s+");
if (parts.length == 0) return; if (parts.length == 0) { return; }
String cmd = parts[0].toLowerCase(); String cmd = parts[0].toLowerCase();
List<String> args = List<String> args =
parts.length > 1 parts.length > 1
? List.of(java.util.Arrays.copyOfRange(parts, 1, parts.length)) ? List.of(java.util.Arrays.copyOfRange(parts, 1, parts.length))
: List.of(); : List.of();
Guild guild = event.getGuild(); Guild guild = event.getGuild();
if (guild == null) return; if (guild == null) { return; }
MessageChannel ch = event.getChannel(); MessageChannel ch = event.getChannel();
Member member = event.getMember(); Member member = event.getMember();

View file

@ -23,7 +23,7 @@ public class MusicBotPlayHandler {
} }
public void handlePlay(final MessageChannel ch, final Guild guild, Member member, final List<String> args) { public void handlePlay(final MessageChannel ch, final Guild guild, Member member, final List<String> args) {
if (reqVoice(ch, member) == null) return; if (reqVoice(ch, member) == null) { return; }
if (args.isEmpty()) { if (args.isEmpty()) {
send(ch, err("Укажи URL или запрос: `m!play <название>`")); send(ch, err("Укажи URL или запрос: `m!play <название>`"));
return; return;
@ -45,7 +45,7 @@ public class MusicBotPlayHandler {
@Override @Override
public void onPlaylistLoaded(final PlaylistLoaded r) { public void onPlaylistLoaded(final PlaylistLoaded r) {
for (Track t : r.getTracks()) m.getScheduler().enqueue(t); for (Track t : r.getTracks()) { m.getScheduler().enqueue(t); }
send(ch, playlistAdded(r)); send(ch, playlistAdded(r));
} }
@ -98,7 +98,7 @@ public class MusicBotPlayHandler {
} }
private void connect(final Guild g, final Member m, final LavalinkManager lm) { private void connect(final Guild g, final Member m, final LavalinkManager lm) {
if (g.getMember(g.getJDA().getSelfUser()).getVoiceState().inAudioChannel()) return; if (g.getMember(g.getJDA().getSelfUser()).getVoiceState().inAudioChannel()) { return; }
var vc = m.getVoiceState().getChannel().asVoiceChannel(); var vc = m.getVoiceState().getChannel().asVoiceChannel();
g.getJDA().getDirectAudioController().connect(vc); g.getJDA().getDirectAudioController().connect(vc);
@ -107,7 +107,7 @@ public class MusicBotPlayHandler {
} }
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
if (g.getMember(g.getJDA().getSelfUser()).getVoiceState().inAudioChannel()) break; if (g.getMember(g.getJDA().getSelfUser()).getVoiceState().inAudioChannel()) { break; }
try { try {
Thread.sleep(200); Thread.sleep(200);
} catch (InterruptedException e) { } catch (InterruptedException e) {
@ -117,7 +117,7 @@ public class MusicBotPlayHandler {
Link link = lm.getOrCreateLink(g.getIdLong()); Link link = lm.getOrCreateLink(g.getIdLong());
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
if (link.getCachedPlayer() != null) return; if (link.getCachedPlayer() != null) { return; }
try { try {
Thread.sleep(200); Thread.sleep(200);
} catch (InterruptedException e) { } catch (InterruptedException e) {
@ -157,7 +157,7 @@ public class MusicBotPlayHandler {
static String fmt(final long ms) { static String fmt(final long ms) {
long s = ms / 1000; long s = ms / 1000;
if (s >= 3600) return String.format("%d:%02d:%02d", s / 3600, (s % 3600) / 60, s % 60); 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); return String.format("%d:%02d", s / 60, s % 60);
} }
} }

View file

@ -27,11 +27,11 @@ public class PlaySelectHandler extends ListenerAdapter {
@Override @Override
public void onStringSelectInteraction(@NotNull final StringSelectInteractionEvent event) { public void onStringSelectInteraction(@NotNull final StringSelectInteractionEvent event) {
if (!event.getComponentId().equals("play_select")) return; if (!event.getComponentId().equals("play_select")) { return; }
var guild = event.getGuild(); var guild = event.getGuild();
var member = event.getMember(); var member = event.getMember();
if (guild == null || member == null) return; if (guild == null || member == null) { return; }
if (!member.getVoiceState().inAudioChannel()) { if (!member.getVoiceState().inAudioChannel()) {
event.replyEmbeds(EmbedTemplates.error("Ошибка", "Зайди в голосовой канал сначала.")) event.replyEmbeds(EmbedTemplates.error("Ошибка", "Зайди в голосовой канал сначала."))

View file

@ -41,18 +41,18 @@ public class FilterState {
public FilterState setNightcore(final boolean enabled) { public FilterState setNightcore(final boolean enabled) {
this.nightcore = enabled; this.nightcore = enabled;
if (enabled) this.vaporwave = false; if (enabled) { this.vaporwave = false; }
return this; return this;
} }
public FilterState setVaporwave(final boolean enabled) { public FilterState setVaporwave(final boolean enabled) {
this.vaporwave = enabled; this.vaporwave = enabled;
if (enabled) this.nightcore = false; if (enabled) { this.nightcore = false; }
return this; return this;
} }
public FilterState setEqualizerBand(final int band, final float gain) { public FilterState setEqualizerBand(final int band, final float gain) {
if (band < 0 || band > 14) return this; if (band < 0 || band > 14) { return this; }
customBands.removeIf(b -> b.getBand() == band); customBands.removeIf(b -> b.getBand() == band);
customBands.add(new Band(band, Math.max(-0.25f, Math.min(10.0f, gain)))); customBands.add(new Band(band, Math.max(-0.25f, Math.min(10.0f, gain))));
return this; return this;

View file

@ -64,7 +64,7 @@ public class GuildMusicManager {
scheduler.stop(); scheduler.stop();
executor.shutdown(); executor.shutdown();
try { try {
if (!executor.awaitTermination(3, TimeUnit.SECONDS)) executor.shutdownNow(); if (!executor.awaitTermination(3, TimeUnit.SECONDS)) { executor.shutdownNow(); }
} catch (InterruptedException e) { } catch (InterruptedException e) {
executor.shutdownNow(); executor.shutdownNow();
} }
@ -112,11 +112,11 @@ public class GuildMusicManager {
} }
private void loadQueueAsync() { private void loadQueueAsync() {
if (queueRepository == null) return; if (queueRepository == null) { return; }
var saved = queueRepository.loadQueue(String.valueOf(guildId)); var saved = queueRepository.loadQueue(String.valueOf(guildId));
if (saved.isEmpty()) return; if (saved.isEmpty()) { return; }
var client = lavalinkManager.getClient(); var client = lavalinkManager.getClient();
if (client == null || client.getNodes().isEmpty()) return; if (client == null || client.getNodes().isEmpty()) { return; }
executor.execute(() -> restoreTracks(saved, client.getNodes().get(0))); executor.execute(() -> restoreTracks(saved, client.getNodes().get(0)));
} }
@ -125,17 +125,17 @@ public class GuildMusicManager {
for (var qt : saved) { for (var qt : saved) {
try { try {
var track = node.decodeTrack(qt.encoded()).block(); var track = node.decodeTrack(qt.encoded()).block();
if (track != null) decoded.add(track); if (track != null) { decoded.add(track); }
} catch (Exception e) { } catch (Exception e) {
LoggerDecorator.warn(logger, "Не удалось декодировать: " + qt.title()); LoggerDecorator.warn(logger, "Не удалось декодировать: " + qt.title());
} }
} }
if (decoded.isEmpty()) return; if (decoded.isEmpty()) { return; }
var q = scheduler.queue; var q = scheduler.queue;
q.addAll(decoded.subList(1, decoded.size())); q.addAll(decoded.subList(1, decoded.size()));
var first = decoded.get(0); var first = decoded.get(0);
var player = getPlayer().orElse(null); var player = getPlayer().orElse(null);
if (player != null && player.getTrack() == null) scheduler.startTrack(first); if (player != null && player.getTrack() == null) { scheduler.startTrack(first); }
else q.offer(first); else q.offer(first);
LoggerDecorator.music(logger, "Восстановлено " + decoded.size() + " треков"); LoggerDecorator.music(logger, "Восстановлено " + decoded.size() + " треков");
queueRepository.deleteQueue(String.valueOf(guildId)); queueRepository.deleteQueue(String.valueOf(guildId));
@ -144,17 +144,17 @@ public class GuildMusicManager {
private ScheduledFuture<?> saveDebounced; private ScheduledFuture<?> saveDebounced;
void saveQueueDebounced() { void saveQueueDebounced() {
if (saveDebounced != null && !saveDebounced.isDone()) saveDebounced.cancel(false); if (saveDebounced != null && !saveDebounced.isDone()) { saveDebounced.cancel(false); }
saveDebounced = executor.schedule(this::saveQueue, 3, TimeUnit.SECONDS); saveDebounced = executor.schedule(this::saveQueue, 3, TimeUnit.SECONDS);
} }
void saveQueue() { void saveQueue() {
if (queueRepository == null) return; if (queueRepository == null) { return; }
var current = scheduler.getCurrentTrack(); var current = scheduler.getCurrentTrack();
var tracks = new ArrayList<>(scheduler.getQueue()); var tracks = new ArrayList<>(scheduler.getQueue());
var queueTracks = new ArrayList<QueueTrack>(); var queueTracks = new ArrayList<QueueTrack>();
if (current != null) queueTracks.add(toQueueTrack(current)); if (current != null) { queueTracks.add(toQueueTrack(current)); }
for (var t : tracks) queueTracks.add(toQueueTrack(t)); for (var t : tracks) { queueTracks.add(toQueueTrack(t)); }
queueRepository.saveQueue(String.valueOf(guildId), queueTracks); queueRepository.saveQueue(String.valueOf(guildId), queueTracks);
} }

View file

@ -44,7 +44,7 @@ public class TrackScheduler {
public boolean nextTrack() { public boolean nextTrack() {
var next = queue.poll(); var next = queue.poll();
if (next == null) return false; if (next == null) { return false; }
startTrack(next); startTrack(next);
manager.saveQueueDebounced(); manager.saveQueueDebounced();
return true; return true;
@ -135,7 +135,7 @@ public class TrackScheduler {
private void nextOrAutoLeave() { private void nextOrAutoLeave() {
var next = queue.poll(); var next = queue.poll();
if (next != null) startTrack(next); if (next != null) { startTrack(next); }
else manager.startAutoLeaveTimer(); else manager.startAutoLeaveTimer();
} }
} }

View file

@ -31,7 +31,7 @@ class TrackStarter {
} }
private void startWithRetry(final Link link, final Track track, final int attempt) { private void startWithRetry(final Link link, final Track track, final int attempt) {
if (attempt > MAX_ATTEMPTS) return; if (attempt > MAX_ATTEMPTS) { return; }
link.createOrUpdatePlayer() link.createOrUpdatePlayer()
.setTrack(track) .setTrack(track)
.setVolume(100) .setVolume(100)

View file

@ -49,7 +49,7 @@ public class PlayCommand implements Command {
@Override @Override
public void execute(final CommandContext ctx) { public void execute(final CommandContext ctx) {
Guild guild = ctx.getGuild(); Guild guild = ctx.getGuild();
if (guild == null) return; if (guild == null) { return; }
Member member = ctx.getAuthor(); Member member = ctx.getAuthor();
if (member == null || !member.getVoiceState().inAudioChannel()) { if (member == null || !member.getVoiceState().inAudioChannel()) {
sendErr(ctx, "Зайди в голосовой канал сначала."); sendErr(ctx, "Зайди в голосовой канал сначала.");
@ -65,7 +65,7 @@ public class PlayCommand implements Command {
handlePickResult(ctx, first); handlePickResult(ctx, first);
return; return;
} }
if (!resolveVoiceConnection(ctx)) return; if (!resolveVoiceConnection(ctx)) { return; }
var lm = playerManager.getLavalinkManager(); var lm = playerManager.getLavalinkManager();
var mm = lm.getMusicManager(guild.getIdLong()); var mm = lm.getMusicManager(guild.getIdLong());
handlePlayQuery(ctx, args, first, lm, mm); handlePlayQuery(ctx, args, first, lm, mm);
@ -89,7 +89,7 @@ public class PlayCommand implements Command {
sendErr(ctx, "Поиск устарел. Сделай новый: `!play <запрос>`"); sendErr(ctx, "Поиск устарел. Сделай новый: `!play <запрос>`");
return; return;
} }
if (!resolveVoiceConnection(ctx)) return; if (!resolveVoiceConnection(ctx)) { return; }
enqueueAndNotify(ctx, t); enqueueAndNotify(ctx, t);
} }
@ -113,11 +113,11 @@ public class PlayCommand implements Command {
} }
private static String buildQuery(final String first, final String raw) { private static String buildQuery(final String first, final String raw) {
if (raw.startsWith("http://") || raw.startsWith("https://")) return raw; if (raw.startsWith("http://") || raw.startsWith("https://")) { return raw; }
if (raw.startsWith("ytsearch:") if (raw.startsWith("ytsearch:")
|| raw.startsWith("ytmsearch:") || raw.startsWith("ytmsearch:")
|| raw.startsWith("scsearch:")) return raw; || raw.startsWith("scsearch:")) return raw;
if ("sc".equals(first)) return "scsearch:" + raw; if ("sc".equals(first)) { return "scsearch:" + raw; }
return "ytsearch:" + raw; return "ytsearch:" + raw;
} }

View file

@ -39,7 +39,7 @@ class PlayLoadHandler extends AbstractAudioLoadResultHandler {
@Override @Override
public void ontrackLoaded(final TrackLoaded r) { public void ontrackLoaded(final TrackLoaded r) {
if (isUrl) enqueueAndNotify(r.getTrack()); if (isUrl) { enqueueAndNotify(r.getTrack()); }
else showResults(List.of(r.getTrack())); else showResults(List.of(r.getTrack()));
} }
@ -105,7 +105,7 @@ class PlayLoadHandler extends AbstractAudioLoadResultHandler {
} }
private void showResults(final List<Track> list) { private void showResults(final List<Track> list) {
if (query == null) return; if (query == null) { return; }
searchHandler.storeResults(ctx.getGuild().getIdLong(), list); searchHandler.storeResults(ctx.getGuild().getIdLong(), list);
int show = Math.min(25, list.size()); int show = Math.min(25, list.size());
var builder = StringSelectMenu.create("play_select") var builder = StringSelectMenu.create("play_select")
@ -128,8 +128,8 @@ class PlayLoadHandler extends AbstractAudioLoadResultHandler {
} }
private static String truncate(String s, final int max) { private static String truncate(String s, final int max) {
if (s == null) return ""; if (s == null) { return ""; }
if (s.length() <= max) return s; if (s.length() <= max) { return s; }
return s.substring(0, max - 1) + "…"; return s.substring(0, max - 1) + "…";
} }
} }

View file

@ -52,9 +52,9 @@ public class SearchHandler {
} }
public static boolean isNumeric(final String s) { public static boolean isNumeric(final String s) {
if (s.isEmpty()) return false; if (s.isEmpty()) { return false; }
for (int i = 0; i < s.length(); i++) { for (int i = 0; i < s.length(); i++) {
if (!Character.isDigit(s.charAt(i))) return false; if (!Character.isDigit(s.charAt(i))) { return false; }
} }
return true; return true;
} }

View file

@ -25,7 +25,7 @@ public class QueueRepository {
public void saveQueue(final String guildId, List<QueueTrack> tracks) { public void saveQueue(final String guildId, List<QueueTrack> tracks) {
deleteQueue(guildId); deleteQueue(guildId);
if (tracks.isEmpty()) return; if (tracks.isEmpty()) { return; }
String sql = String sql =
"INSERT INTO music_queue (guild_id, position, track_encoded, track_title, " "INSERT INTO music_queue (guild_id, position, track_encoded, track_title, "

View file

@ -14,10 +14,10 @@ public class FilterSlashHandler {
} }
public void handleBassboost(final SlashCommandInteractionEvent event) { public void handleBassboost(final SlashCommandInteractionEvent event) {
if (reqVoice(event) == null) return; if (reqVoice(event) == null) { return; }
var manager = getManager(event); var manager = getManager(event);
Integer level = event.getOption("level") != null ? event.getOption("level").getAsInt() : null; Integer level = event.getOption("level") != null ? event.getOption("level").getAsInt() : null;
if (level == null) level = 10; if (level == null) { level = 10; }
level = Math.max(-25, Math.min(25, level)); level = Math.max(-25, Math.min(25, level));
manager.getScheduler().setBassboost(level); manager.getScheduler().setBassboost(level);
event event
@ -26,7 +26,7 @@ public class FilterSlashHandler {
} }
public void handleNightcore(final SlashCommandInteractionEvent event) { public void handleNightcore(final SlashCommandInteractionEvent event) {
if (reqVoice(event) == null) return; if (reqVoice(event) == null) { return; }
var manager = getManager(event); var manager = getManager(event);
boolean now = !manager.getScheduler().filterState.isNightcore(); boolean now = !manager.getScheduler().filterState.isNightcore();
manager.getScheduler().setNightcore(now); manager.getScheduler().setNightcore(now);
@ -37,7 +37,7 @@ public class FilterSlashHandler {
} }
public void handleVaporwave(final SlashCommandInteractionEvent event) { public void handleVaporwave(final SlashCommandInteractionEvent event) {
if (reqVoice(event) == null) return; if (reqVoice(event) == null) { return; }
var manager = getManager(event); var manager = getManager(event);
boolean now = !manager.getScheduler().filterState.isVaporwave(); boolean now = !manager.getScheduler().filterState.isVaporwave();
manager.getScheduler().setVaporwave(now); manager.getScheduler().setVaporwave(now);
@ -48,7 +48,7 @@ public class FilterSlashHandler {
} }
public void handleEqualizer(final SlashCommandInteractionEvent event) { public void handleEqualizer(final SlashCommandInteractionEvent event) {
if (reqVoice(event) == null) return; if (reqVoice(event) == null) { return; }
var manager = getManager(event); var manager = getManager(event);
Integer band = event.getOption("band") != null ? event.getOption("band").getAsInt() : null; Integer band = event.getOption("band") != null ? event.getOption("band").getAsInt() : null;
Double gain = event.getOption("gain") != null ? event.getOption("gain").getAsDouble() : null; Double gain = event.getOption("gain") != null ? event.getOption("gain").getAsDouble() : null;
@ -73,7 +73,7 @@ public class FilterSlashHandler {
} }
public void handleReset(final SlashCommandInteractionEvent event) { public void handleReset(final SlashCommandInteractionEvent event) {
if (reqVoice(event) == null) return; if (reqVoice(event) == null) { return; }
var manager = getManager(event); var manager = getManager(event);
manager.getScheduler().resetFilters(); manager.getScheduler().resetFilters();
event.replyEmbeds(EmbedTemplates.info("Сброшено", "Все фильтры сброшены.")).queue(); event.replyEmbeds(EmbedTemplates.info("Сброшено", "Все фильтры сброшены.")).queue();

View file

@ -24,7 +24,7 @@ public class PlaySlashHandler {
public void handle(final SlashCommandInteractionEvent event) { public void handle(final SlashCommandInteractionEvent event) {
Member member = requireVoiceChannel(event); Member member = requireVoiceChannel(event);
if (member == null) return; if (member == null) { return; }
String query = event.getOption("query").getAsString(); String query = event.getOption("query").getAsString();
Guild guild = event.getGuild(); Guild guild = event.getGuild();
event.deferReply().queue(); event.deferReply().queue();
@ -122,7 +122,7 @@ public class PlaySlashHandler {
private static Member requireVoiceChannel(final SlashCommandInteractionEvent event) { private static Member requireVoiceChannel(final SlashCommandInteractionEvent event) {
Member member = event.getMember(); Member member = event.getMember();
if (member != null && member.getVoiceState().inAudioChannel()) return member; if (member != null && member.getVoiceState().inAudioChannel()) { return member; }
event event
.replyEmbeds(EmbedTemplates.error("Голосовой канал", "Зайди в голосовой канал сначала.")) .replyEmbeds(EmbedTemplates.error("Голосовой канал", "Зайди в голосовой канал сначала."))
.setEphemeral(true) .setEphemeral(true)
@ -135,7 +135,7 @@ public class PlaySlashHandler {
long hours = totalSec / 3600; long hours = totalSec / 3600;
long minutes = (totalSec % 3600) / 60; long minutes = (totalSec % 3600) / 60;
long secs = totalSec % 60; long secs = totalSec % 60;
if (hours > 0) return String.format("%d:%02d:%02d", hours, minutes, secs); if (hours > 0) { return String.format("%d:%02d:%02d", hours, minutes, secs); }
return String.format("%d:%02d", minutes, secs); return String.format("%d:%02d", minutes, secs);
} }
} }

View file

@ -20,7 +20,7 @@ public class QueueSlashHandler {
} }
public void handleStop(final SlashCommandInteractionEvent ev) { public void handleStop(final SlashCommandInteractionEvent ev) {
if (reqVoice(ev) == null) return; if (reqVoice(ev) == null) { return; }
pm.getMusicManager(ev.getGuild().getIdLong()).stop(); pm.getMusicManager(ev.getGuild().getIdLong()).stop();
ev.getGuild().getJDA().getDirectAudioController().disconnect(ev.getGuild()); ev.getGuild().getJDA().getDirectAudioController().disconnect(ev.getGuild());
ev.replyEmbeds(EmbedTemplates.info("Остановлено", "Музыка остановлена, очередь очищена.")) ev.replyEmbeds(EmbedTemplates.info("Остановлено", "Музыка остановлена, очередь очищена."))
@ -28,7 +28,7 @@ public class QueueSlashHandler {
} }
public void handleSkip(final SlashCommandInteractionEvent ev) { public void handleSkip(final SlashCommandInteractionEvent ev) {
if (reqVoice(ev) == null) return; if (reqVoice(ev) == null) { return; }
var s = pm.getMusicManager(ev.getGuild().getIdLong()).getScheduler(); var s = pm.getMusicManager(ev.getGuild().getIdLong()).getScheduler();
if (s.getCurrentTrack() == null) { if (s.getCurrentTrack() == null) {
ev.replyEmbeds(EmbedTemplates.error("Очередь пуста", "Сейчас ничего не играет.")).queue(); ev.replyEmbeds(EmbedTemplates.error("Очередь пуста", "Сейчас ничего не играет.")).queue();
@ -52,7 +52,7 @@ public class QueueSlashHandler {
var ci = cur.getInfo(); var ci = cur.getInfo();
eb.addField("Сейчас играет", "**" + ci.getTitle() + "**\n" + ci.getAuthor(), false); eb.addField("Сейчас играет", "**" + ci.getTitle() + "**\n" + ci.getAuthor(), false);
} }
if (!q.isEmpty()) eb.addField("В очереди (" + q.size() + ")", buildQueueList(q), false); if (!q.isEmpty()) { eb.addField("В очереди (" + q.size() + ")", buildQueueList(q), false); }
ev.replyEmbeds(eb.build()).queue(); ev.replyEmbeds(eb.build()).queue();
} }
@ -63,7 +63,7 @@ public class QueueSlashHandler {
var t = q.get(i); var t = q.get(i);
sb.append("`").append(i + 1).append(".` **").append(t.getInfo().getTitle()).append("**\n"); sb.append("`").append(i + 1).append(".` **").append(t.getInfo().getTitle()).append("**\n");
} }
if (q.size() > show) sb.append("... и ещё **").append(q.size() - show).append("** треков"); if (q.size() > show) { sb.append("... и ещё **").append(q.size() - show).append("** треков"); }
return sb.toString(); return sb.toString();
} }
@ -88,7 +88,7 @@ public class QueueSlashHandler {
} }
public void handleVolume(final SlashCommandInteractionEvent ev) { public void handleVolume(final SlashCommandInteractionEvent ev) {
if (reqVoice(ev) == null) return; if (reqVoice(ev) == null) { return; }
var link = pm.getLavalinkManager().getClient().getLinkIfCached(ev.getGuild().getIdLong()); var link = pm.getLavalinkManager().getClient().getLinkIfCached(ev.getGuild().getIdLong());
var opt = ev.getOption("percent"); var opt = ev.getOption("percent");
if (opt == null) { if (opt == null) {
@ -104,7 +104,7 @@ public class QueueSlashHandler {
} }
public void handlePause(final SlashCommandInteractionEvent ev) { public void handlePause(final SlashCommandInteractionEvent ev) {
if (reqVoice(ev) == null) return; if (reqVoice(ev) == null) { return; }
pm.getMusicManager(ev.getGuild().getIdLong()) pm.getMusicManager(ev.getGuild().getIdLong())
.getPlayer() .getPlayer()
.ifPresent(pl -> pl.setPaused(true).subscribe(null, LOG)); .ifPresent(pl -> pl.setPaused(true).subscribe(null, LOG));
@ -112,7 +112,7 @@ public class QueueSlashHandler {
} }
public void handleResume(final SlashCommandInteractionEvent ev) { public void handleResume(final SlashCommandInteractionEvent ev) {
if (reqVoice(ev) == null) return; if (reqVoice(ev) == null) { return; }
pm.getMusicManager(ev.getGuild().getIdLong()) pm.getMusicManager(ev.getGuild().getIdLong())
.getPlayer() .getPlayer()
.ifPresent(pl -> pl.setPaused(false).subscribe(null, LOG)); .ifPresent(pl -> pl.setPaused(false).subscribe(null, LOG));
@ -120,13 +120,13 @@ public class QueueSlashHandler {
} }
public void handleShuffle(final SlashCommandInteractionEvent ev) { public void handleShuffle(final SlashCommandInteractionEvent ev) {
if (reqVoice(ev) == null) return; if (reqVoice(ev) == null) { return; }
pm.getMusicManager(ev.getGuild().getIdLong()).getScheduler().shuffle(); pm.getMusicManager(ev.getGuild().getIdLong()).getScheduler().shuffle();
ev.replyEmbeds(EmbedTemplates.info("Перемешано", "Очередь перемешана.")).queue(); ev.replyEmbeds(EmbedTemplates.info("Перемешано", "Очередь перемешана.")).queue();
} }
public void handleRepeat(final SlashCommandInteractionEvent ev) { public void handleRepeat(final SlashCommandInteractionEvent ev) {
if (reqVoice(ev) == null) return; if (reqVoice(ev) == null) { return; }
var s = pm.getMusicManager(ev.getGuild().getIdLong()).getScheduler(); var s = pm.getMusicManager(ev.getGuild().getIdLong()).getScheduler();
var now = !s.isRepeating(); var now = !s.isRepeating();
s.setRepeating(now); s.setRepeating(now);
@ -136,18 +136,18 @@ public class QueueSlashHandler {
private Member reqVoice(final SlashCommandInteractionEvent ev) { private Member reqVoice(final SlashCommandInteractionEvent ev) {
var m = ev.getMember(); var m = ev.getMember();
if (m != null && m.getVoiceState().inAudioChannel()) return m; if (m != null && m.getVoiceState().inAudioChannel()) { return m; }
var em = EmbedTemplates.error("Голосовой канал", "Зайди в голосовой канал сначала."); var em = EmbedTemplates.error("Голосовой канал", "Зайди в голосовой канал сначала.");
ev.replyEmbeds(em).setEphemeral(true).queue(); ev.replyEmbeds(em).setEphemeral(true).queue();
return null; return null;
} }
static String progressBar(final long pos, long dur) { static String progressBar(final long pos, long dur) {
if (dur <= 0) dur = 1; if (dur <= 0) { dur = 1; }
int total = 20; int total = 20;
int filled = (int) ((double) pos / dur * total); int filled = (int) ((double) pos / dur * total);
var bar = new StringBuilder("\u2503"); var bar = new StringBuilder("\u2503");
for (int i = 0; i < total; i++) bar.append(i < filled ? "\u2588" : "\u2591"); for (int i = 0; i < total; i++) { bar.append(i < filled ? "\u2588" : "\u2591"); }
var p = String.format("%d:%02d", pos / 60000, (pos / 1000) % 60); var p = String.format("%d:%02d", pos / 60000, (pos / 1000) % 60);
var d = String.format("%d:%02d", dur / 60000, (dur / 1000) % 60); var d = String.format("%d:%02d", dur / 60000, (dur / 1000) % 60);
return bar + "\u2503 " + p + " / " + d; return bar + "\u2503 " + p + " / " + d;

View file

@ -47,7 +47,7 @@ public final class RankCardIcons {
double rad = (i % 2 == 0) ? r : inner; double rad = (i % 2 == 0) ? r : inner;
double px = cx + Math.cos(angle) * rad; double px = cx + Math.cos(angle) * rad;
double py = cy + Math.sin(angle) * rad; double py = cy + Math.sin(angle) * rad;
if (i == 0) star.moveTo(px, py); if (i == 0) { star.moveTo(px, py); }
else star.lineTo(px, py); else star.lineTo(px, py);
} }
star.closePath(); star.closePath();

View file

@ -66,7 +66,7 @@ public class RankCardRenderer {
public Font loadFont(final String path, final float size) { public Font loadFont(final String path, final float size) {
String key = path + "@" + size; String key = path + "@" + size;
Font cached = FONT_CACHE.get(key); Font cached = FONT_CACHE.get(key);
if (cached != null) return cached; if (cached != null) { return cached; }
try (final InputStream is = getClass().getClassLoader().getResourceAsStream("assets/" + path)) { try (final InputStream is = getClass().getClassLoader().getResourceAsStream("assets/" + path)) {
if (is == null) { if (is == null) {
Font fallback = new Font("SansSerif", Font.BOLD, (int) size); Font fallback = new Font("SansSerif", Font.BOLD, (int) size);

View file

@ -42,7 +42,7 @@ public class RadioCommand implements Command {
@Override @Override
public void execute(final CommandContext context) { public void execute(final CommandContext context) {
Guild guild = context.getGuild(); Guild guild = context.getGuild();
if (guild == null) return; if (guild == null) { return; }
List<String> args = context.getArgs(); List<String> args = context.getArgs();
if (args.isEmpty()) { if (args.isEmpty()) {

View file

@ -26,12 +26,12 @@ public class RadioBotListener extends ListenerAdapter {
@Override @Override
public void onMessageReceived(@NotNull final MessageReceivedEvent event) { public void onMessageReceived(@NotNull final MessageReceivedEvent event) {
if (event.getAuthor().isBot()) return; if (event.getAuthor().isBot()) { return; }
String content = event.getMessage().getContentRaw(); String content = event.getMessage().getContentRaw();
if (!content.startsWith(PREFIX)) return; if (!content.startsWith(PREFIX)) { return; }
String[] parts = content.substring(PREFIX.length()).trim().split("\\s+"); String[] parts = content.substring(PREFIX.length()).trim().split("\\s+");
if (parts.length == 0) return; if (parts.length == 0) { return; }
String cmd = parts[0].toLowerCase(); String cmd = parts[0].toLowerCase();
List<String> args = List<String> args =
@ -40,7 +40,7 @@ public class RadioBotListener extends ListenerAdapter {
: List.of(); : List.of();
Guild guild = event.getGuild(); Guild guild = event.getGuild();
if (guild == null) return; if (guild == null) { return; }
switch (cmd) { switch (cmd) {
case "play": case "play":
@ -76,7 +76,7 @@ public class RadioBotListener extends ListenerAdapter {
private void handlePlay(final MessageReceivedEvent event, final List<String> args) { private void handlePlay(final MessageReceivedEvent event, final List<String> args) {
Member member = requireVoiceChannel(event); Member member = requireVoiceChannel(event);
if (member == null) return; if (member == null) { return; }
if (args.isEmpty()) { if (args.isEmpty()) {
event.getChannel().sendMessage("❌ Укажи URL радиостанции.").queue(); event.getChannel().sendMessage("❌ Укажи URL радиостанции.").queue();
@ -100,7 +100,7 @@ public class RadioBotListener extends ListenerAdapter {
private void handleStop(final MessageReceivedEvent event) { private void handleStop(final MessageReceivedEvent event) {
Member member = requireVoiceChannel(event); Member member = requireVoiceChannel(event);
if (member == null) return; if (member == null) { return; }
radioManager.stopRadio(event.getGuild().getIdLong()); radioManager.stopRadio(event.getGuild().getIdLong());
event.getChannel().sendMessage("⏹️ Радио остановлено.").queue(); event.getChannel().sendMessage("⏹️ Радио остановлено.").queue();

View file

@ -43,7 +43,7 @@ public class RadioManager {
radioStates.compute( radioStates.compute(
guildId, guildId,
(id, state) -> { (id, state) -> {
if (state == null) state = new GuildRadioState(); if (state == null) { state = new GuildRadioState(); }
state.streamUrl = streamUrl; state.streamUrl = streamUrl;
return state; return state;
}); });
@ -57,12 +57,12 @@ public class RadioManager {
public void startRadio(final long guildId, final long channelId) { public void startRadio(final long guildId, final long channelId) {
GuildRadioState state = radioStates.get(guildId); GuildRadioState state = radioStates.get(guildId);
if (state == null || state.streamUrl == null || state.streamUrl.isBlank()) return; if (state == null || state.streamUrl == null || state.streamUrl.isBlank()) { return; }
if (radioJda == null || lavalinkManager == null) return; if (radioJda == null || lavalinkManager == null) { return; }
String url = state.streamUrl; String url = state.streamUrl;
int vol = state.volume; int vol = state.volume;
if (state.musicManager != null) stopRadio(guildId); if (state.musicManager != null) { stopRadio(guildId); }
GuildRadioState finalState = radioStates.computeIfAbsent(guildId, id -> new GuildRadioState()); GuildRadioState finalState = radioStates.computeIfAbsent(guildId, id -> new GuildRadioState());
finalState.streamUrl = url; finalState.streamUrl = url;
@ -100,7 +100,7 @@ public class RadioManager {
new AbstractAudioLoadResultHandler() { new AbstractAudioLoadResultHandler() {
@Override @Override
public void ontrackLoaded(final TrackLoaded r) { public void ontrackLoaded(final TrackLoaded r) {
if (vol != 100) link.createOrUpdatePlayer().setVolume(vol).subscribe(); if (vol != 100) { link.createOrUpdatePlayer().setVolume(vol).subscribe(); }
mm.getScheduler().enqueue(r.getTrack()); mm.getScheduler().enqueue(r.getTrack());
LoggerDecorator.music(logger, "Radio started in guild " + guildId); LoggerDecorator.music(logger, "Radio started in guild " + guildId);
} }
@ -108,7 +108,7 @@ public class RadioManager {
@Override @Override
public void onPlaylistLoaded(final dev.arbjerg.lavalink.client.player.PlaylistLoaded r) { public void onPlaylistLoaded(final dev.arbjerg.lavalink.client.player.PlaylistLoaded r) {
if (!r.getTracks().isEmpty()) { if (!r.getTracks().isEmpty()) {
if (vol != 100) link.createOrUpdatePlayer().setVolume(vol).subscribe(); if (vol != 100) { link.createOrUpdatePlayer().setVolume(vol).subscribe(); }
mm.getScheduler().enqueue(r.getTracks().get(0)); mm.getScheduler().enqueue(r.getTracks().get(0));
LoggerDecorator.music(logger, "Radio started in guild " + guildId); LoggerDecorator.music(logger, "Radio started in guild " + guildId);
} }
@ -117,7 +117,7 @@ public class RadioManager {
@Override @Override
public void onSearchResultLoaded(final dev.arbjerg.lavalink.client.player.SearchResult r) { public void onSearchResultLoaded(final dev.arbjerg.lavalink.client.player.SearchResult r) {
if (!r.getTracks().isEmpty()) { if (!r.getTracks().isEmpty()) {
if (vol != 100) link.createOrUpdatePlayer().setVolume(vol).subscribe(); if (vol != 100) { link.createOrUpdatePlayer().setVolume(vol).subscribe(); }
mm.getScheduler().enqueue(r.getTracks().get(0)); mm.getScheduler().enqueue(r.getTracks().get(0));
LoggerDecorator.music(logger, "Radio started in guild " + guildId); LoggerDecorator.music(logger, "Radio started in guild " + guildId);
} }
@ -142,18 +142,18 @@ public class RadioManager {
public void stopRadio(final long guildId) { public void stopRadio(final long guildId) {
GuildRadioState state = radioStates.remove(guildId); GuildRadioState state = radioStates.remove(guildId);
if (state == null) return; if (state == null) { return; }
if (state.musicManager != null) { if (state.musicManager != null) {
state.musicManager.stop(); state.musicManager.stop();
state.musicManager.destroy(); state.musicManager.destroy();
} }
if (lavalinkManager != null) { if (lavalinkManager != null) {
Link link = lavalinkManager.getClient().getLinkIfCached(guildId); Link link = lavalinkManager.getClient().getLinkIfCached(guildId);
if (link != null) link.destroy().subscribe(); if (link != null) { link.destroy().subscribe(); }
} }
if (radioJda != null) { if (radioJda != null) {
Guild guild = radioJda.getGuildById(guildId); Guild guild = radioJda.getGuildById(guildId);
if (guild != null) guild.getAudioManager().closeAudioConnection(); if (guild != null) { guild.getAudioManager().closeAudioConnection(); }
} }
LoggerDecorator.music(logger, "Radio stopped for guild " + guildId); LoggerDecorator.music(logger, "Radio stopped for guild " + guildId);
} }
@ -178,7 +178,7 @@ public class RadioManager {
public void setVolume(final long guildId, int volume) { public void setVolume(final long guildId, int volume) {
GuildRadioState state = radioStates.get(guildId); GuildRadioState state = radioStates.get(guildId);
if (state == null) return; if (state == null) { return; }
state.volume = Math.max(0, Math.min(100, volume)); state.volume = Math.max(0, Math.min(100, volume));
if (lavalinkManager != null) { if (lavalinkManager != null) {
var link = lavalinkManager.getClient().getLinkIfCached(guildId); var link = lavalinkManager.getClient().getLinkIfCached(guildId);

View file

@ -26,15 +26,15 @@ public class ReactionRoleListener extends ListenerAdapter {
@Override @Override
public void onMessageReactionAdd(@NotNull final MessageReactionAddEvent event) { public void onMessageReactionAdd(@NotNull final MessageReactionAddEvent event) {
if (event.getUser() == null || event.getUser().isBot()) return; if (event.getUser() == null || event.getUser().isBot()) { return; }
if (event.getGuild() == null) return; if (event.getGuild() == null) { return; }
var emoji = event.getEmoji().getAsReactionCode(); var emoji = event.getEmoji().getAsReactionCode();
var messageId = event.getMessageId(); var messageId = event.getMessageId();
var bindings = repository.findByMessage(messageId); var bindings = repository.findByMessage(messageId);
var binding = bindings.stream().filter(b -> b.emoji().equals(emoji)).findFirst(); var binding = bindings.stream().filter(b -> b.emoji().equals(emoji)).findFirst();
if (binding.isEmpty()) return; if (binding.isEmpty()) { return; }
var role = event.getGuild().getRoleById(binding.get().roleId()); var role = event.getGuild().getRoleById(binding.get().roleId());
if (role == null) { if (role == null) {
@ -43,7 +43,7 @@ public class ReactionRoleListener extends ListenerAdapter {
} }
var member = event.getMember(); var member = event.getMember();
if (member == null) return; if (member == null) { return; }
event.getGuild().addRoleToMember(member, role).queue( event.getGuild().addRoleToMember(member, role).queue(
ok -> {}, ok -> {},
@ -53,15 +53,15 @@ public class ReactionRoleListener extends ListenerAdapter {
@Override @Override
public void onMessageReactionRemove(@NotNull final MessageReactionRemoveEvent event) { public void onMessageReactionRemove(@NotNull final MessageReactionRemoveEvent event) {
if (event.getUser() == null || event.getUser().isBot()) return; if (event.getUser() == null || event.getUser().isBot()) { return; }
if (event.getGuild() == null) return; if (event.getGuild() == null) { return; }
var emoji = event.getEmoji().getAsReactionCode(); var emoji = event.getEmoji().getAsReactionCode();
var messageId = event.getMessageId(); var messageId = event.getMessageId();
var bindings = repository.findByMessage(messageId); var bindings = repository.findByMessage(messageId);
var binding = bindings.stream().filter(b -> b.emoji().equals(emoji)).findFirst(); var binding = bindings.stream().filter(b -> b.emoji().equals(emoji)).findFirst();
if (binding.isEmpty()) return; if (binding.isEmpty()) { return; }
var role = event.getGuild().getRoleById(binding.get().roleId()); var role = event.getGuild().getRoleById(binding.get().roleId());
if (role == null) { if (role == null) {

View file

@ -23,7 +23,7 @@ public class AgrSlashCommands extends ListenerAdapter {
@Override @Override
public void onSlashCommandInteraction(@NotNull final SlashCommandInteractionEvent event) { public void onSlashCommandInteraction(@NotNull final SlashCommandInteractionEvent event) {
if (!event.getName().equals("agr")) return; if (!event.getName().equals("agr")) { return; }
if (!config.getSuperAdminId().equals(event.getUser().getId())) { if (!config.getSuperAdminId().equals(event.getUser().getId())) {
event event

View file

@ -32,7 +32,7 @@ public class AiSessionManager {
public List<CachedMessage> getContext(final String channelId, final int maxMsgs) { public List<CachedMessage> getContext(final String channelId, final int maxMsgs) {
AiSession session = sessions.get(channelId); AiSession session = sessions.get(channelId);
if (session == null) return List.of(); if (session == null) { return List.of(); }
return session.getContext(maxMsgs); return session.getContext(maxMsgs);
} }

View file

@ -45,7 +45,7 @@ public class AndrertListener extends ListenerAdapter {
@Override @Override
public void onMessageReceived(@NotNull final MessageReceivedEvent event) { public void onMessageReceived(@NotNull final MessageReceivedEvent event) {
if (event.getAuthor().isBot()) return; if (event.getAuthor().isBot()) { return; }
String userId = event.getAuthor().getId(); String userId = event.getAuthor().getId();
String channelId = event.getChannel().getId(); String channelId = event.getChannel().getId();
@ -55,7 +55,7 @@ public class AndrertListener extends ListenerAdapter {
if (lastReply != null) { if (lastReply != null) {
lastAiReplyTime.put(key, -1L); lastAiReplyTime.put(key, -1L);
ScheduledFuture<?> existing = pendingPings.remove(key); ScheduledFuture<?> existing = pendingPings.remove(key);
if (existing != null) existing.cancel(false); if (existing != null) { existing.cancel(false); }
} }
boolean isAllowedChannel = boolean isAllowedChannel =
@ -65,14 +65,14 @@ public class AndrertListener extends ListenerAdapter {
if (!isAllowedChannel) { if (!isAllowedChannel) {
Long expiresAt = trackedUsers.get(userId); Long expiresAt = trackedUsers.get(userId);
if (expiresAt == null) return; if (expiresAt == null) { return; }
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
if (now > expiresAt) { if (now > expiresAt) {
trackedUsers.remove(userId); trackedUsers.remove(userId);
return; return;
} }
String content = event.getMessage().getContentRaw().strip(); String content = event.getMessage().getContentRaw().strip();
if (content.length() < 2 && event.getMessage().getAttachments().isEmpty()) return; if (content.length() < 2 && event.getMessage().getAttachments().isEmpty()) { return; }
trackedUsers.put(userId, now + TRACK_TTL); trackedUsers.put(userId, now + TRACK_TTL);
} }
@ -107,7 +107,7 @@ public class AndrertListener extends ListenerAdapter {
sessionManager.getContext(event.getChannel().getId(), CHANNEL_CONTEXT); sessionManager.getContext(event.getChannel().getId(), CHANNEL_CONTEXT);
String response = roastService.generateResponse(context, targetName, userId); String response = roastService.generateResponse(context, targetName, userId);
if (response == null || response.isBlank()) return; if (response == null || response.isBlank()) { return; }
sendInParts(event, response); sendInParts(event, response);
scheduleAutoPing(event, userId); scheduleAutoPing(event, userId);
@ -120,7 +120,7 @@ public class AndrertListener extends ListenerAdapter {
lastAiReplyTime.put(key, now); lastAiReplyTime.put(key, now);
ScheduledFuture<?> existing = pendingPings.remove(key); ScheduledFuture<?> existing = pendingPings.remove(key);
if (existing != null) existing.cancel(false); if (existing != null) { existing.cancel(false); }
TextChannel channel = event.getChannel().asTextChannel(); TextChannel channel = event.getChannel().asTextChannel();
String targetMention = "<@" + userId + ">"; String targetMention = "<@" + userId + ">";
@ -129,7 +129,7 @@ public class AndrertListener extends ListenerAdapter {
scheduler.schedule( scheduler.schedule(
() -> { () -> {
Long lastReply = lastAiReplyTime.get(key); Long lastReply = lastAiReplyTime.get(key);
if (lastReply == null || lastReply != now) return; if (lastReply == null || lastReply != now) { return; }
if (channel.canTalk()) { if (channel.canTalk()) {
channel channel
.getHistory() .getHistory()
@ -142,7 +142,7 @@ public class AndrertListener extends ListenerAdapter {
m -> m ->
m.getAuthor().getId().equals(userId) m.getAuthor().getId().equals(userId)
&& m.getTimeCreated().toEpochSecond() * 1000 > now); && m.getTimeCreated().toEpochSecond() * 1000 > now);
if (userReplied) return; if (userReplied) { return; }
String[] lines = { String[] lines = {
"эй " + targetMention + ", ты чё замолчал? я не закончил", "эй " + targetMention + ", ты чё замолчал? я не закончил",
@ -163,7 +163,7 @@ public class AndrertListener extends ListenerAdapter {
sessionManager.clear(channelId); sessionManager.clear(channelId);
for (int i = hist.size() - 1; i >= 0; i--) { for (int i = hist.size() - 1; i >= 0; i--) {
Message m = hist.get(i); Message m = hist.get(i);
if (m.getAuthor().isBot()) continue; if (m.getAuthor().isBot()) { continue; }
String a = m.getAuthor().getEffectiveName(); String a = m.getAuthor().getEffectiveName();
String c = String c =
m.getContentRaw() + replyInfo(m) + attachmentInfo(m); m.getContentRaw() + replyInfo(m) + attachmentInfo(m);
@ -206,7 +206,7 @@ public class AndrertListener extends ListenerAdapter {
int end = Math.min(start + 1990, text.length()); int end = Math.min(start + 1990, text.length());
if (end < text.length()) { if (end < text.length()) {
int nl = text.lastIndexOf('\n', end); int nl = text.lastIndexOf('\n', end);
if (nl > start) end = nl; if (nl > start) { end = nl; }
} }
parts.add(text.substring(start, end).strip()); parts.add(text.substring(start, end).strip());
start = end; start = end;
@ -222,10 +222,10 @@ public class AndrertListener extends ListenerAdapter {
private String replyInfo(final Message msg) { private String replyInfo(final Message msg) {
Message ref = msg.getReferencedMessage(); Message ref = msg.getReferencedMessage();
if (ref == null) return ""; if (ref == null) { return ""; }
String refAuthor = ref.getAuthor().isBot() ? "бот" : ref.getAuthor().getEffectiveName(); String refAuthor = ref.getAuthor().isBot() ? "бот" : ref.getAuthor().getEffectiveName();
String refText = ref.getContentRaw().replace("\n", " ").strip(); String refText = ref.getContentRaw().replace("\n", " ").strip();
if (refText.length() > 80) refText = refText.substring(0, 80) + "..."; if (refText.length() > 80) { refText = refText.substring(0, 80) + "..."; }
return " (в ответ на @" + refAuthor + ": \"" + refText + "\")"; return " (в ответ на @" + refAuthor + ": \"" + refText + "\")";
} }

View file

@ -131,13 +131,13 @@ public class ContentFetcher {
urls.add(url); urls.add(url);
} }
} }
if (urls.isEmpty()) return null; if (urls.isEmpty()) { return null; }
StringBuilder result = new StringBuilder(); StringBuilder result = new StringBuilder();
for (String url : urls) { for (String url : urls) {
String content = parseSingleUrl(url); String content = parseSingleUrl(url);
if (content != null) { if (content != null) {
if (result.length() + content.length() > MAX_FETCH_CHARS) break; if (result.length() + content.length() > MAX_FETCH_CHARS) { break; }
result.append(content).append("\n---\n"); result.append(content).append("\n---\n");
} }
} }
@ -168,21 +168,21 @@ public class ContentFetcher {
org.jsoup.select.Elements lines = doc.select(".blob-wrapper .highlight .blob-code"); org.jsoup.select.Elements lines = doc.select(".blob-wrapper .highlight .blob-code");
if (lines.isEmpty()) { if (lines.isEmpty()) {
org.jsoup.select.Elements raw = doc.select(".blob-wrapper table td:last-child"); org.jsoup.select.Elements raw = doc.select(".blob-wrapper table td:last-child");
if (!raw.isEmpty()) lines = raw; if (!raw.isEmpty()) { lines = raw; }
} }
if (lines.isEmpty()) { if (lines.isEmpty()) {
org.jsoup.select.Elements code = doc.select("table.highlight tr td:last-child"); org.jsoup.select.Elements code = doc.select("table.highlight tr td:last-child");
if (!code.isEmpty()) lines = code; if (!code.isEmpty()) { lines = code; }
} }
if (!lines.isEmpty()) { if (!lines.isEmpty()) {
sb.append("[код файла]:\n"); sb.append("[код файла]:\n");
for (var line : lines) { for (var line : lines) {
String l = line.text().strip(); String l = line.text().strip();
if (!l.isBlank()) sb.append(l).append("\n"); if (!l.isBlank()) { sb.append(l).append("\n"); }
} }
} else { } else {
String fallback = extractMainContent(doc); String fallback = extractMainContent(doc);
if (fallback != null) sb.append(fallback); if (fallback != null) { sb.append(fallback); }
} }
} else if (url.matches(".*github\\.com/[^/]+/[^/]+/issues/\\d+.*") } else if (url.matches(".*github\\.com/[^/]+/[^/]+/issues/\\d+.*")
|| url.matches(".*github\\.com/[^/]+/[^/]+/pull/\\d+.*")) { || url.matches(".*github\\.com/[^/]+/[^/]+/pull/\\d+.*")) {
@ -193,14 +193,14 @@ public class ContentFetcher {
org.jsoup.select.Elements body = doc.select(".comment-body, .edit-comment-hide"); org.jsoup.select.Elements body = doc.select(".comment-body, .edit-comment-hide");
if (!body.isEmpty()) { if (!body.isEmpty()) {
sb.append("[описание]:\n"); sb.append("[описание]:\n");
for (var el : body) sb.append(el.text()).append("\n"); for (var el : body) { sb.append(el.text()).append("\n"); }
} }
org.jsoup.select.Elements comments = doc.select(".comment .comment-body"); org.jsoup.select.Elements comments = doc.select(".comment .comment-body");
if (!comments.isEmpty()) { if (!comments.isEmpty()) {
sb.append("[комментарии]:\n"); sb.append("[комментарии]:\n");
int count = 0; int count = 0;
for (var el : comments) { for (var el : comments) {
if (count >= 5) break; if (count >= 5) { break; }
String t = el.text().strip(); String t = el.text().strip();
if (!t.isBlank()) { if (!t.isBlank()) {
sb.append("- ").append(t).append("\n"); sb.append("- ").append(t).append("\n");
@ -214,7 +214,7 @@ public class ContentFetcher {
sb.append("[README]:\n").append(readme.first().text()); sb.append("[README]:\n").append(readme.first().text());
} else { } else {
String fallback = extractMainContent(doc); String fallback = extractMainContent(doc);
if (fallback != null) sb.append(fallback); if (fallback != null) { sb.append(fallback); }
} }
org.jsoup.select.Elements repoName = doc.select("strong[itemprop=name], .repohead h1"); org.jsoup.select.Elements repoName = doc.select("strong[itemprop=name], .repohead h1");
if (!repoName.isEmpty() && sb.isEmpty()) { if (!repoName.isEmpty() && sb.isEmpty()) {
@ -268,29 +268,29 @@ public class ContentFetcher {
var el = doc.selectFirst(sel); var el = doc.selectFirst(sel);
if (el != null) { if (el != null) {
String text = el.text().strip(); String text = el.text().strip();
if (!text.isBlank()) return text; if (!text.isBlank()) { return text; }
} }
} }
String body = doc.body() != null ? doc.body().text().strip() : ""; String body = doc.body() != null ? doc.body().text().strip() : "";
if (!body.isBlank()) return body; if (!body.isBlank()) { return body; }
return null; return null;
} }
private boolean isTextExtension(final String url) { private boolean isTextExtension(final String url) {
String lower = url.toLowerCase(); String lower = url.toLowerCase();
int idx = lower.lastIndexOf('.'); int idx = lower.lastIndexOf('.');
if (idx < 0) return false; if (idx < 0) { return false; }
String ext = lower.substring(idx); String ext = lower.substring(idx);
if (ext.contains("?")) ext = ext.substring(0, ext.indexOf('?')); if (ext.contains("?")) { ext = ext.substring(0, ext.indexOf('?')); }
return TEXT_EXTENSIONS.contains(ext); return TEXT_EXTENSIONS.contains(ext);
} }
private boolean isMediaExtension(final String url) { private boolean isMediaExtension(final String url) {
String lower = url.toLowerCase(); String lower = url.toLowerCase();
int idx = lower.lastIndexOf('.'); int idx = lower.lastIndexOf('.');
if (idx < 0) return false; if (idx < 0) { return false; }
String ext = lower.substring(idx); String ext = lower.substring(idx);
if (ext.contains("?")) ext = ext.substring(0, ext.indexOf('?')); if (ext.contains("?")) { ext = ext.substring(0, ext.indexOf('?')); }
return MEDIA_EXTENSIONS.contains(ext); return MEDIA_EXTENSIONS.contains(ext);
} }
} }

View file

@ -23,12 +23,12 @@ public class DebateChannelListener extends ListenerAdapter {
@Override @Override
public void onMessageReceived(@NotNull final MessageReceivedEvent event) { public void onMessageReceived(@NotNull final MessageReceivedEvent event) {
if (event.getAuthor().isBot()) return; if (event.getAuthor().isBot()) { return; }
String msgId = event.getMessage().getId(); String msgId = event.getMessage().getId();
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
Long prev = seenMessages.put(msgId, now); Long prev = seenMessages.put(msgId, now);
if (prev != null) return; if (prev != null) { return; }
seenMessages.entrySet().removeIf(e -> now - e.getValue() > 5000); seenMessages.entrySet().removeIf(e -> now - e.getValue() > 5000);
logger.info( logger.info(

View file

@ -85,9 +85,9 @@ public class DebateService {
public void onHumanMessage(final MessageReceivedEvent event) { public void onHumanMessage(final MessageReceivedEvent event) {
String debateId = config.getAiDebateChannelId(); String debateId = config.getAiDebateChannelId();
if (debateId == null || debateId.isBlank()) return; if (debateId == null || debateId.isBlank()) { return; }
if (!event.getChannel().getId().equals(debateId)) return; if (!event.getChannel().getId().equals(debateId)) { return; }
if (event.getAuthor().isBot()) return; if (event.getAuthor().isBot()) { return; }
if (event.getMessage().getContentRaw().isBlank() if (event.getMessage().getContentRaw().isBlank()
&& event.getMessage().getAttachments().isEmpty()) return; && event.getMessage().getAttachments().isEmpty()) return;
@ -105,7 +105,7 @@ public class DebateService {
private void doRound(final TextChannel channel, final ChannelState state) { private void doRound(final TextChannel channel, final ChannelState state) {
String debateId = channel.getId(); String debateId = channel.getId();
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
if (now - state.lastHumanTime > 300_000 || state.roundDone) return; if (now - state.lastHumanTime > 300_000 || state.roundDone) { return; }
state.cancel(); state.cancel();
state.roundDone = true; state.roundDone = true;
@ -133,19 +133,19 @@ public class DebateService {
List<CachedMessage> ctx = buildContext(messages); List<CachedMessage> ctx = buildContext(messages);
if (state.roundCount >= MAX_ROUNDS) return; if (state.roundCount >= MAX_ROUNDS) { return; }
state.roundCount++; state.roundCount++;
String personality = pickPersonality(state.lastPersonality); String personality = pickPersonality(state.lastPersonality);
if (personality == null) return; if (personality == null) { return; }
state.lastPersonality = personality; state.lastPersonality = personality;
String response = generateResponse(personality, ctx); String response = generateResponse(personality, ctx);
if (response == null || response.isBlank()) return; if (response == null || response.isBlank()) { return; }
JDA jda = jdaRegistry.getByPersonality(personality); JDA jda = jdaRegistry.getByPersonality(personality);
TextChannel target = jda.getTextChannelById(debateId); TextChannel target = jda.getTextChannelById(debateId);
if (target == null) return; if (target == null) { return; }
String replyToId = state.lastMessageId; String replyToId = state.lastMessageId;
target target
.sendMessage(response) .sendMessage(response)
@ -164,7 +164,7 @@ public class DebateService {
} }
private String pickPersonality(String exclude) { private String pickPersonality(String exclude) {
if (exclude == null) return PERSONALITIES[0]; if (exclude == null) { return PERSONALITIES[0]; }
for (int i = 0; i < PERSONALITIES.length; i++) { for (int i = 0; i < PERSONALITIES.length; i++) {
if (PERSONALITIES[i].equals(exclude)) { if (PERSONALITIES[i].equals(exclude)) {
return PERSONALITIES[(i + 1) % PERSONALITIES.length]; return PERSONALITIES[(i + 1) % PERSONALITIES.length];
@ -194,7 +194,7 @@ public class DebateService {
otherNames = "шинд и генту"; otherNames = "шинд и генту";
} }
} }
if (prompt.isBlank()) return null; if (prompt.isBlank()) { return null; }
prompt += "\n\nты " + selfName + ". два других ai в чате это " + otherNames; prompt += "\n\nты " + selfName + ". два других ai в чате это " + otherNames;
@ -214,19 +214,19 @@ public class DebateService {
StringBuilder userContent = new StringBuilder(); StringBuilder userContent = new StringBuilder();
for (CachedMessage m : ctx) { for (CachedMessage m : ctx) {
String t = m.content(); String t = m.content();
if (t.length() > config.getAiMsgLength()) t = t.substring(0, config.getAiMsgLength()) + "..."; if (t.length() > config.getAiMsgLength()) { t = t.substring(0, config.getAiMsgLength()) + "..."; }
userContent.append("[").append(m.channelName()).append("] ").append(t).append("\n"); userContent.append("[").append(m.channelName()).append("] ").append(t).append("\n");
if (userContent.length() > config.getAiContextChars()) break; if (userContent.length() > config.getAiContextChars()) { break; }
} }
String text = userContent.toString().strip(); String text = userContent.toString().strip();
if (text.length() > config.getAiContextChars()) if (text.length() > config.getAiContextChars())
text = text.substring(0, config.getAiContextChars()); text = text.substring(0, config.getAiContextChars());
String wiki = wikipediaService.search(text); String wiki = wikipediaService.search(text);
if (wiki != null) text += "\n\n[википедия]:\n" + wiki; if (wiki != null) { text += "\n\n[википедия]:\n" + wiki; }
String knowledge = knowledgeService.search(text); String knowledge = knowledgeService.search(text);
if (knowledge != null) text += "\n\n[знания]:\n" + knowledge; if (knowledge != null) { text += "\n\n[знания]:\n" + knowledge; }
return deepSeekClient.callModel(prompt, text, 0.9); return deepSeekClient.callModel(prompt, text, 0.9);
} }
@ -242,9 +242,9 @@ public class DebateService {
String name; String name;
if (msg.getAuthor().isBot()) { if (msg.getAuthor().isBot()) {
String id = msg.getAuthor().getId(); String id = msg.getAuthor().getId();
if (id.equals(archId)) name = "арч"; if (id.equals(archId)) { name = "арч"; }
else if (id.equals(winId)) name = "шинд"; else if (id.equals(winId)) { name = "шинд"; }
else if (id.equals(gentooId)) name = "генту"; else if (id.equals(gentooId)) { name = "генту"; }
else name = "бот"; else name = "бот";
} else { } else {
name = msg.getAuthor().getEffectiveName(); name = msg.getAuthor().getEffectiveName();

View file

@ -43,7 +43,7 @@ public class DeepSeekClient {
} }
public String callModel(final String systemPrompt, final String userContent, final double temperature) { public String callModel(final String systemPrompt, final String userContent, final double temperature) {
if (apiKey == null || apiKey.isBlank()) return null; if (apiKey == null || apiKey.isBlank()) { return null; }
JsonObject body = new JsonObject(); JsonObject body = new JsonObject();
body.addProperty("model", MODEL); body.addProperty("model", MODEL);
@ -78,7 +78,7 @@ public class DeepSeekClient {
} }
return null; return null;
} }
if (resp.body() == null) return null; if (resp.body() == null) { return null; }
String respBody = resp.body().string(); String respBody = resp.body().string();
JsonObject jsonResp = JsonParser.parseString(respBody).getAsJsonObject(); JsonObject jsonResp = JsonParser.parseString(respBody).getAsJsonObject();
JsonObject msg = JsonObject msg =

View file

@ -50,7 +50,7 @@ public class DossierManager {
logger.warn("Failed to load dossier {}", p, e); logger.warn("Failed to load dossier {}", p, e);
} }
}); });
if (!dossiers.isEmpty()) logger.info("Loaded {} dossiers", dossiers.size()); if (!dossiers.isEmpty()) { logger.info("Loaded {} dossiers", dossiers.size()); }
} catch (IOException e) { } catch (IOException e) {
logger.warn("Failed to list dossiers dir", e); logger.warn("Failed to list dossiers dir", e);
} }

View file

@ -51,14 +51,14 @@ public class HelperListener extends ListenerAdapter {
@Override @Override
public void onMessageReceived(@NotNull final MessageReceivedEvent event) { public void onMessageReceived(@NotNull final MessageReceivedEvent event) {
String channelId = config.getAiDebateChannelId(); String channelId = config.getAiDebateChannelId();
if (channelId == null || channelId.isBlank()) return; if (channelId == null || channelId.isBlank()) { return; }
if (!event.getChannel().getId().equals(channelId)) return; if (!event.getChannel().getId().equals(channelId)) { return; }
if (event.getAuthor().isBot()) return; if (event.getAuthor().isBot()) { return; }
if (event.getMessage().getContentRaw().isBlank() if (event.getMessage().getContentRaw().isBlank()
&& event.getMessage().getAttachments().isEmpty()) return; && event.getMessage().getAttachments().isEmpty()) return;
String raw = event.getMessage().getContentRaw(); String raw = event.getMessage().getContentRaw();
if (!raw.isBlank() && !LanguageFilter.isAllowed(raw)) return; if (!raw.isBlank() && !LanguageFilter.isAllowed(raw)) { return; }
respond(event); respond(event);
} }
@ -100,7 +100,7 @@ public class HelperListener extends ListenerAdapter {
String response = String response =
roastService.generateResponse(context, targetName, null, helperPrompt); roastService.generateResponse(context, targetName, null, helperPrompt);
if (response == null || response.isBlank()) return; if (response == null || response.isBlank()) { return; }
sendReply(event, response); sendReply(event, response);
}); });
@ -150,7 +150,7 @@ public class HelperListener extends ListenerAdapter {
int end = Math.min(start + 1990, text.length()); int end = Math.min(start + 1990, text.length());
if (end < text.length()) { if (end < text.length()) {
int nl = text.lastIndexOf('\n', end); int nl = text.lastIndexOf('\n', end);
if (nl > start) end = nl; if (nl > start) { end = nl; }
} }
parts.add(text.substring(start, end).strip()); parts.add(text.substring(start, end).strip());
start = end; start = end;

View file

@ -68,10 +68,10 @@ public class KnowledgeService {
} }
public String search(String text) { public String search(String text) {
if (text == null || text.isBlank() || files.isEmpty()) return null; if (text == null || text.isBlank() || files.isEmpty()) { return null; }
String[] words = extractKeywords(text); String[] words = extractKeywords(text);
if (words.length == 0) return null; if (words.length == 0) { return null; }
List<ScoredResult> results = new ArrayList<>(); List<ScoredResult> results = new ArrayList<>();
for (KnowledgeFile file : files) { for (KnowledgeFile file : files) {
@ -83,14 +83,14 @@ public class KnowledgeService {
} }
results.sort((a, b) -> Integer.compare(b.score, a.score)); results.sort((a, b) -> Integer.compare(b.score, a.score));
if (results.isEmpty()) return null; if (results.isEmpty()) { return null; }
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
int count = 0; int count = 0;
for (ScoredResult r : results) { for (ScoredResult r : results) {
if (count >= RESULT_LIMIT) break; if (count >= RESULT_LIMIT) { break; }
if (sb.length() + r.snippet.length() > MAX_CHARS) break; if (sb.length() + r.snippet.length() > MAX_CHARS) { break; }
if (count > 0) sb.append("\n---\n"); if (count > 0) { sb.append("\n---\n"); }
sb.append("[").append(r.fileName).append("] ").append(r.snippet); sb.append("[").append(r.fileName).append("] ").append(r.snippet);
count++; count++;
} }
@ -133,7 +133,7 @@ public class KnowledgeService {
for (String kw : keywords) { for (String kw : keywords) {
int idx = lower.indexOf(kw); int idx = lower.indexOf(kw);
if (idx == -1) continue; if (idx == -1) { continue; }
int count = countInWindow(lower, idx, 500, keywords); int count = countInWindow(lower, idx, 500, keywords);
if (count > bestCount) { if (count > bestCount) {
bestCount = count; bestCount = count;

View file

@ -15,7 +15,7 @@ public class LanguageFilter {
.replaceAll("https?://\\S+", "") .replaceAll("https?://\\S+", "")
.replaceAll("[\\p{So}]", "") .replaceAll("[\\p{So}]", "")
.strip(); .strip();
if (clean.isBlank()) return true; if (clean.isBlank()) { return true; }
int[] cps = clean.codePoints().toArray(); int[] cps = clean.codePoints().toArray();
@ -24,7 +24,7 @@ public class LanguageFilter {
long otherScript = 0; long otherScript = 0;
for (int cp : cps) { for (int cp : cps) {
if (Character.isWhitespace(cp) || Character.isDigit(cp) || cp == '_') continue; if (Character.isWhitespace(cp) || Character.isDigit(cp) || cp == '_') { continue; }
var script = Character.UnicodeScript.of(cp); var script = Character.UnicodeScript.of(cp);
if (script == Character.UnicodeScript.CYRILLIC) { if (script == Character.UnicodeScript.CYRILLIC) {
cyrillic++; cyrillic++;
@ -36,10 +36,10 @@ public class LanguageFilter {
} }
} }
if (otherScript > 0) return false; if (otherScript > 0) { return false; }
if (cyrillic > latin && cyrillic > 0) return true; if (cyrillic > latin && cyrillic > 0) { return true; }
if (cyrillic > 0) return true; if (cyrillic > 0) { return true; }
String latinText = String latinText =
clean clean
@ -53,8 +53,8 @@ public class LanguageFilter {
.collect(Collectors.joining()); .collect(Collectors.joining());
for (int cp : latinText.codePoints().toArray()) { for (int cp : latinText.codePoints().toArray()) {
if (POLISH_CHARS.contains(cp)) return true; if (POLISH_CHARS.contains(cp)) { return true; }
if (LITHUANIAN_CHARS.contains(cp)) return true; if (LITHUANIAN_CHARS.contains(cp)) { return true; }
} }
boolean onlyBasicLatin = boolean onlyBasicLatin =

View file

@ -150,7 +150,7 @@ public class RoastService {
text = text.substring(0, config.getAiMsgLength()) + "..."; text = text.substring(0, config.getAiMsgLength()) + "...";
} }
userContent.append("[").append(m.channelName()).append("] ").append(text).append("\n"); userContent.append("[").append(m.channelName()).append("] ").append(text).append("\n");
if (userContent.length() > config.getAiContextChars()) break; if (userContent.length() > config.getAiContextChars()) { break; }
} }
String text = userContent.toString().strip(); String text = userContent.toString().strip();
if (text.length() > config.getAiContextChars()) { if (text.length() > config.getAiContextChars()) {
@ -202,7 +202,7 @@ public class RoastService {
text = text.substring(0, config.getAiMsgLength()) + "..."; text = text.substring(0, config.getAiMsgLength()) + "...";
} }
userContent.append("[").append(m.channelName()).append("] ").append(text).append("\n"); userContent.append("[").append(m.channelName()).append("] ").append(text).append("\n");
if (userContent.length() > config.getAiContextChars()) break; if (userContent.length() > config.getAiContextChars()) { break; }
} }
String text = userContent.toString().strip(); String text = userContent.toString().strip();
if (text.length() > config.getAiContextChars()) { if (text.length() > config.getAiContextChars()) {

View file

@ -34,10 +34,10 @@ public class WebSearchService {
} }
public String search(String query) { public String search(String query) {
if (query == null || query.isBlank()) return null; if (query == null || query.isBlank()) { return null; }
try { try {
List<SearchResult> results = searchDdg(query); List<SearchResult> results = searchDdg(query);
if (results.isEmpty()) return null; if (results.isEmpty()) { return null; }
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
for (int i = 0; i < Math.min(results.size(), 3); i++) { for (int i = 0; i < Math.min(results.size(), 3); i++) {
@ -78,11 +78,11 @@ public class WebSearchService {
.get() .get()
.build(); .build();
try (final Response resp = httpClient.newCall(req).execute()) { try (final Response resp = httpClient.newCall(req).execute()) {
if (!resp.isSuccessful() || resp.body() == null) return results; if (!resp.isSuccessful() || resp.body() == null) { return results; }
String html = resp.body().string(); String html = resp.body().string();
Document doc = Jsoup.parse(html); Document doc = Jsoup.parse(html);
for (Element a : doc.select("a.result__a")) { for (Element a : doc.select("a.result__a")) {
if (results.size() >= 5) break; if (results.size() >= 5) { break; }
String title = a.text().strip(); String title = a.text().strip();
String href = a.attr("href"); String href = a.attr("href");
String realUrl = extractUrl(href); String realUrl = extractUrl(href);
@ -101,13 +101,13 @@ public class WebSearchService {
} }
private String extractUrl(String ddgUrl) { private String extractUrl(String ddgUrl) {
if (ddgUrl == null || ddgUrl.isBlank()) return ""; if (ddgUrl == null || ddgUrl.isBlank()) { return ""; }
if (ddgUrl.startsWith("//")) ddgUrl = "https:" + ddgUrl; if (ddgUrl.startsWith("//")) { ddgUrl = "https:" + ddgUrl; }
try { try {
if (ddgUrl.contains("uddg=")) { if (ddgUrl.contains("uddg=")) {
String enc = ddgUrl.substring(ddgUrl.indexOf("uddg=") + 5); String enc = ddgUrl.substring(ddgUrl.indexOf("uddg=") + 5);
int amp = enc.indexOf('&'); int amp = enc.indexOf('&');
if (amp > 0) enc = enc.substring(0, amp); if (amp > 0) { enc = enc.substring(0, amp); }
return URLDecoder.decode(enc, StandardCharsets.UTF_8); return URLDecoder.decode(enc, StandardCharsets.UTF_8);
} }
} catch (Exception ignored) { } catch (Exception ignored) {
@ -126,7 +126,7 @@ public class WebSearchService {
.get() .get()
.build(); .build();
try (final Response resp = httpClient.newCall(req).execute()) { try (final Response resp = httpClient.newCall(req).execute()) {
if (!resp.isSuccessful() || resp.body() == null) return null; if (!resp.isSuccessful() || resp.body() == null) { return null; }
String html = resp.body().string(); String html = resp.body().string();
Document doc = Jsoup.parse(html); Document doc = Jsoup.parse(html);
Element main = Element main =
@ -140,7 +140,7 @@ public class WebSearchService {
doc.select("script, style, nav, footer, header, .sidebar, aside").remove(); doc.select("script, style, nav, footer, header, .sidebar, aside").remove();
text = doc.body().text().strip(); text = doc.body().text().strip();
} }
if (text.length() > 2000) text = text.substring(0, 2000) + "..."; if (text.length() > 2000) { text = text.substring(0, 2000) + "..."; }
return text.isEmpty() ? null : text; return text.isEmpty() ? null : text;
} }
} catch (Exception e) { } catch (Exception e) {

View file

@ -34,15 +34,15 @@ public class WikipediaService {
} }
public String search(String query) { public String search(String query) {
if (query == null || query.isBlank()) return null; if (query == null || query.isBlank()) { return null; }
try { try {
String url = String.format(SEARCH_URL, URLEncoder.encode(query, StandardCharsets.UTF_8)); String url = String.format(SEARCH_URL, URLEncoder.encode(query, StandardCharsets.UTF_8));
Request req = new Request.Builder().url(url).get().build(); Request req = new Request.Builder().url(url).get().build();
try (final Response resp = httpClient.newCall(req).execute()) { try (final Response resp = httpClient.newCall(req).execute()) {
if (!resp.isSuccessful() || resp.body() == null) return null; if (!resp.isSuccessful() || resp.body() == null) { return null; }
JsonObject json = JsonParser.parseString(resp.body().string()).getAsJsonObject(); JsonObject json = JsonParser.parseString(resp.body().string()).getAsJsonObject();
JsonArray results = json.getAsJsonObject("query").getAsJsonArray("search"); JsonArray results = json.getAsJsonObject("query").getAsJsonArray("search");
if (results == null || results.size() == 0) return null; if (results == null || results.size() == 0) { return null; }
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
for (int i = 0; i < Math.min(results.size(), 3); i++) { for (int i = 0; i < Math.min(results.size(), 3); i++) {
@ -77,14 +77,14 @@ public class WikipediaService {
String url = String.format(EXTRACT_URL, URLEncoder.encode(title, StandardCharsets.UTF_8)); String url = String.format(EXTRACT_URL, URLEncoder.encode(title, StandardCharsets.UTF_8));
Request req = new Request.Builder().url(url).get().build(); Request req = new Request.Builder().url(url).get().build();
try (final Response resp = httpClient.newCall(req).execute()) { try (final Response resp = httpClient.newCall(req).execute()) {
if (!resp.isSuccessful() || resp.body() == null) return null; if (!resp.isSuccessful() || resp.body() == null) { return null; }
JsonObject json = JsonParser.parseString(resp.body().string()).getAsJsonObject(); JsonObject json = JsonParser.parseString(resp.body().string()).getAsJsonObject();
JsonObject pages = json.getAsJsonObject("query").getAsJsonObject("pages"); JsonObject pages = json.getAsJsonObject("query").getAsJsonObject("pages");
for (var key : pages.keySet()) { for (var key : pages.keySet()) {
JsonObject page = pages.getAsJsonObject(key); JsonObject page = pages.getAsJsonObject(key);
if (page.has("extract") && !page.get("extract").isJsonNull()) { if (page.has("extract") && !page.get("extract").isJsonNull()) {
String ext = page.get("extract").getAsString().strip(); String ext = page.get("extract").getAsString().strip();
if (ext.length() > 800) ext = ext.substring(0, 800) + "..."; if (ext.length() > 800) { ext = ext.substring(0, 800) + "..."; }
return ext; return ext;
} }
} }

View file

@ -41,9 +41,9 @@ public class CreateRoleCommand implements Command {
@Override @Override
public void execute(final CommandContext context) { public void execute(final CommandContext context) {
if (!RoleCommandValidator.validateGuild(context)) return; if (!RoleCommandValidator.validateGuild(context)) { return; }
Guild guild = context.getGuild(); Guild guild = context.getGuild();
if (!RoleCommandValidator.validateBotPermissions(guild, context)) return; if (!RoleCommandValidator.validateBotPermissions(guild, context)) { return; }
if (!RoleCommandValidator.validateArgumentCount( if (!RoleCommandValidator.validateArgumentCount(
context, context,
2, 2,
@ -52,10 +52,10 @@ public class CreateRoleCommand implements Command {
} }
RoleData roleData = parseRoleData(context); RoleData roleData = parseRoleData(context);
if (!RoleValidators.validateRoleName(roleData.name, guild, context)) return; if (!RoleValidators.validateRoleName(roleData.name, guild, context)) { return; }
Color color = RoleValidators.parseColor(roleData.colorArg, context); Color color = RoleValidators.parseColor(roleData.colorArg, context);
if (color == null) return; if (color == null) { return; }
if (!RoleValidators.checkUserLimit( if (!RoleValidators.checkUserLimit(
guild.getId(), context.getAuthor().getId(), roleManager, context)) { guild.getId(), context.getAuthor().getId(), roleManager, context)) {

View file

@ -141,7 +141,7 @@ public class ServerStatsService {
} }
private static String escapeCsv(String value) { private static String escapeCsv(String value) {
if (value == null) return ""; if (value == null) { return ""; }
if (value.contains(",") || value.contains("\"") || value.contains("\n")) { if (value.contains(",") || value.contains("\"") || value.contains("\n")) {
return "\"" + value.replace("\"", "\"\"") + "\""; return "\"" + value.replace("\"", "\"\"") + "\"";
} }

View file

@ -97,16 +97,16 @@ public class ShipCommand implements Command {
} }
private String generateMessage(final int percentage) { private String generateMessage(final int percentage) {
if (percentage >= 90) return "Идеальная пара! 💑"; if (percentage >= 90) { return "Идеальная пара! 💑"; }
if (percentage >= 70) return "Отличная совместимость! 💕"; if (percentage >= 70) { return "Отличная совместимость! 💕"; }
if (percentage >= 50) return "Неплохие шансы! 💖"; if (percentage >= 50) { return "Неплохие шансы! 💖"; }
if (percentage >= 30) return "Есть потенциал... 💔"; if (percentage >= 30) { return "Есть потенциал... 💔"; }
return "Лучше остаться друзьями 💀"; return "Лучше остаться друзьями 💀";
} }
private Color getColorByPercentage(final int percentage) { private Color getColorByPercentage(final int percentage) {
if (percentage >= 70) return new Color(255, 105, 180); // Розовый if (percentage >= 70) { return new Color(255, 105, 180); } // Розовый
if (percentage >= 40) return new Color(255, 182, 193); // Светло-розовый if (percentage >= 40) { return new Color(255, 182, 193); } // Светло-розовый
return new Color(128, 128, 128); // Серый return new Color(128, 128, 128); // Серый
} }
} }

View file

@ -32,7 +32,7 @@ public class TicketListener extends ListenerAdapter {
@Override @Override
public void onButtonInteraction(final ButtonInteractionEvent event) { public void onButtonInteraction(final ButtonInteractionEvent event) {
String buttonId = event.getComponentId(); String buttonId = event.getComponentId();
if (!buttonId.startsWith("ticket_")) return; if (!buttonId.startsWith("ticket_")) { return; }
switch (buttonId) { switch (buttonId) {
case "ticket_create" -> handleCreate(event); case "ticket_create" -> handleCreate(event);
@ -44,10 +44,10 @@ public class TicketListener extends ListenerAdapter {
private void handleCreate(final ButtonInteractionEvent event) { private void handleCreate(final ButtonInteractionEvent event) {
Guild guild = event.getGuild(); Guild guild = event.getGuild();
if (guild == null) return; if (guild == null) { return; }
Member member = event.getMember(); Member member = event.getMember();
if (member == null) return; if (member == null) { return; }
String username = member.getUser().getName(); String username = member.getUser().getName();
String channelName = "ticket-" + username; String channelName = "ticket-" + username;
@ -89,10 +89,10 @@ public class TicketListener extends ListenerAdapter {
private void handleClose(final ButtonInteractionEvent event) { private void handleClose(final ButtonInteractionEvent event) {
Guild guild = event.getGuild(); Guild guild = event.getGuild();
if (guild == null) return; if (guild == null) { return; }
Member member = event.getMember(); Member member = event.getMember();
if (member == null) return; if (member == null) { return; }
TextChannel channel = event.getChannel().asTextChannel(); TextChannel channel = event.getChannel().asTextChannel();
Ticket ticket = ticketRepository.findByChannel(channel.getId()); Ticket ticket = ticketRepository.findByChannel(channel.getId());

View file

@ -158,7 +158,7 @@ public class TikTokCommand implements Command {
} }
private String truncate(String str, final int maxLen) { private String truncate(String str, final int maxLen) {
if (str == null) return ""; if (str == null) { return ""; }
return str.length() > maxLen ? str.substring(0, maxLen - 3) + "..." : str; return str.length() > maxLen ? str.substring(0, maxLen - 3) + "..." : str;
} }
} }

View file

@ -15,7 +15,7 @@ public final class VoiceHelper {
public static boolean waitForCondition(final BooleanSupplier condition) { public static boolean waitForCondition(final BooleanSupplier condition) {
for (int i = 0; i < RETRIES; i++) { for (int i = 0; i < RETRIES; i++) {
if (condition.getAsBoolean()) return true; if (condition.getAsBoolean()) { return true; }
try { try {
Thread.sleep(DELAY_MS); Thread.sleep(DELAY_MS);
} catch (InterruptedException e) { } catch (InterruptedException e) {
@ -30,7 +30,7 @@ public final class VoiceHelper {
long deadline = System.nanoTime() + unit.toNanos(timeout); long deadline = System.nanoTime() + unit.toNanos(timeout);
long delay = Math.min(DELAY_MS, unit.toMillis(timeout) / RETRIES); long delay = Math.min(DELAY_MS, unit.toMillis(timeout) / RETRIES);
while (System.nanoTime() < deadline) { while (System.nanoTime() < deadline) {
if (condition.getAsBoolean()) return true; if (condition.getAsBoolean()) { return true; }
try { try {
Thread.sleep(delay); Thread.sleep(delay);
} catch (InterruptedException e) { } catch (InterruptedException e) {
@ -47,13 +47,13 @@ public final class VoiceHelper {
* @return true если подключение успешно, false если не удалось * @return true если подключение успешно, false если не удалось
*/ */
public static boolean connectForPlayback(final Guild guild, final Member member, final LavalinkManager lm) { public static boolean connectForPlayback(final Guild guild, final Member member, final LavalinkManager lm) {
if (guild.getSelfMember().getVoiceState().inAudioChannel()) return true; if (guild.getSelfMember().getVoiceState().inAudioChannel()) { return true; }
var vc = member.getVoiceState().getChannel().asVoiceChannel(); var vc = member.getVoiceState().getChannel().asVoiceChannel();
guild.getJDA().getDirectAudioController().connect(vc); guild.getJDA().getDirectAudioController().connect(vc);
if (!guild.getAudioManager().isConnected()) guild.getAudioManager().openAudioConnection(vc); if (!guild.getAudioManager().isConnected()) { guild.getAudioManager().openAudioConnection(vc); }
var self = guild.getSelfMember(); var self = guild.getSelfMember();
waitForCondition(() -> self.getVoiceState().inAudioChannel()); waitForCondition(() -> self.getVoiceState().inAudioChannel());
if (!self.getVoiceState().inAudioChannel()) return false; if (!self.getVoiceState().inAudioChannel()) { return false; }
var link = lm.getOrCreateLink(guild.getIdLong()); var link = lm.getOrCreateLink(guild.getIdLong());
waitForCondition(() -> link.getCachedPlayer() != null); waitForCondition(() -> link.getCachedPlayer() != null);
return link.getCachedPlayer() != null; return link.getCachedPlayer() != null;

View file

@ -29,10 +29,10 @@ public class VoiceButtonHandler extends ListenerAdapter {
@Override @Override
public void onButtonInteraction(final ButtonInteractionEvent event) { public void onButtonInteraction(final ButtonInteractionEvent event) {
String buttonId = event.getComponentId(); String buttonId = event.getComponentId();
if (!buttonId.startsWith("voice_")) return; if (!buttonId.startsWith("voice_")) { return; }
String[] parts = buttonId.split(":"); String[] parts = buttonId.split(":");
if (parts.length != 2) return; if (parts.length != 2) { return; }
String action = parts[0].replace("voice_", ""); String action = parts[0].replace("voice_", "");
String channelId = parts[1]; String channelId = parts[1];
@ -154,7 +154,7 @@ public class VoiceButtonHandler extends ListenerAdapter {
} }
private boolean isOwnerOrAdmin(final Member member, final String channelId) { private boolean isOwnerOrAdmin(final Member member, final String channelId) {
if (member.hasPermission(Permission.ADMINISTRATOR)) return true; if (member.hasPermission(Permission.ADMINISTRATOR)) { return true; }
var channelData = voiceManager.getChannelData(channelId); var channelData = voiceManager.getChannelData(channelId);
return channelData != null && channelData.getOwnerId().equals(member.getId()); return channelData != null && channelData.getOwnerId().equals(member.getId());
} }

View file

@ -23,10 +23,10 @@ public class VoiceModalHandler extends ListenerAdapter {
@Override @Override
public void onModalInteraction(final ModalInteractionEvent event) { public void onModalInteraction(final ModalInteractionEvent event) {
String modalId = event.getModalId(); String modalId = event.getModalId();
if (!modalId.startsWith("voice_")) return; if (!modalId.startsWith("voice_")) { return; }
String[] parts = modalId.split(":"); String[] parts = modalId.split(":");
if (parts.length != 2) return; if (parts.length != 2) { return; }
String action = parts[0].replace("voice_", ""); String action = parts[0].replace("voice_", "");
String channelId = parts[1]; String channelId = parts[1];

View file

@ -27,7 +27,7 @@ public class VoiceChannelListener extends ListenerAdapter {
Member member = event.getMember(); Member member = event.getMember();
Guild guild = event.getGuild(); Guild guild = event.getGuild();
if (member.getUser().isBot()) return; if (member.getUser().isBot()) { return; }
if (event.getChannelJoined() != null) { if (event.getChannelJoined() != null) {
VoiceChannel joinedChannel = event.getChannelJoined().asVoiceChannel(); VoiceChannel joinedChannel = event.getChannelJoined().asVoiceChannel();

View file

@ -22,10 +22,10 @@ public class VoiceSyncListener extends ListenerAdapter {
@Override @Override
public void onChannelUpdateName(final ChannelUpdateNameEvent event) { public void onChannelUpdateName(final ChannelUpdateNameEvent event) {
if (!(event.getChannel() instanceof VoiceChannel channel)) return; if (!(event.getChannel() instanceof VoiceChannel channel)) { return; }
VoiceChannelData data = voiceManager.getChannelData(channel.getId()); VoiceChannelData data = voiceManager.getChannelData(channel.getId());
if (data == null) return; if (data == null) { return; }
String newName = event.getNewValue(); String newName = event.getNewValue();
voiceManager.updatePresetSetting(data.getOwnerId(), "name", newName); voiceManager.updatePresetSetting(data.getOwnerId(), "name", newName);

View file

@ -92,10 +92,10 @@ public class VoiceChannelManager {
public void updatePresetSetting(final String userId, final String setting, final Object value) { public void updatePresetSetting(final String userId, final String setting, final Object value) {
var preset = getUserPreset(userId); var preset = getUserPreset(userId);
if ("name".equals(setting)) preset.setName((String) value); if ("name".equals(setting)) { preset.setName((String) value); }
else if ("limit".equals(setting)) preset.setLimit((Integer) value); else if ("limit".equals(setting)) { preset.setLimit((Integer) value); }
else if ("bitrate".equals(setting)) preset.setBitrate((Integer) value); else if ("bitrate".equals(setting)) { preset.setBitrate((Integer) value); }
else if ("locked".equals(setting)) preset.setLocked((Boolean) value); else if ("locked".equals(setting)) { preset.setLocked((Boolean) value); }
saveUserPreset(userId, preset); saveUserPreset(userId, preset);
} }
@ -133,8 +133,8 @@ public class VoiceChannelManager {
try { try {
if (preset.getName() != null && !preset.getName().isEmpty()) if (preset.getName() != null && !preset.getName().isEmpty())
channel.getManager().setName(preset.getName()).queue(); channel.getManager().setName(preset.getName()).queue();
if (preset.getLimit() >= 0) channel.getManager().setUserLimit(preset.getLimit()).queue(); if (preset.getLimit() >= 0) { channel.getManager().setUserLimit(preset.getLimit()).queue(); }
if (preset.getBitrate() > 0) channel.getManager().setBitrate(preset.getBitrate()).queue(); if (preset.getBitrate() > 0) { channel.getManager().setBitrate(preset.getBitrate()).queue(); }
if (preset.isLocked()) { if (preset.isLocked()) {
var publicRole = channel.getGuild().getPublicRole(); var publicRole = channel.getGuild().getPublicRole();
channel.upsertPermissionOverride(publicRole).deny(Permission.VOICE_CONNECT).queue(); channel.upsertPermissionOverride(publicRole).deny(Permission.VOICE_CONNECT).queue();

View file

@ -122,7 +122,7 @@ public class VoiceSetupPrefixCommand implements Command {
EmbedFactory.create() EmbedFactory.create()
.withTitle("🎤 Конфигурация системы личных каналов") .withTitle("🎤 Конфигурация системы личных каналов")
.withColor(Color.BLUE); .withColor(Color.BLUE);
if (triggerId != null) embed.addField("Канал-триггер", "<#" + triggerId + ">", false); if (triggerId != null) { embed.addField("Канал-триггер", "<#" + triggerId + ">", false); }
else embed.addField("Канал-триггер", "❌ Не установлен", false); else embed.addField("Канал-триггер", "❌ Не установлен", false);
if (categoryId != null) { if (categoryId != null) {
var category = context.getGuild().getCategoryById(categoryId); var category = context.getGuild().getCategoryById(categoryId);

View file

@ -42,7 +42,7 @@ public class WelcomeListener extends ListenerAdapter {
String mention = event.getMember().getAsMention(); String mention = event.getMember().getAsMention();
TextChannel channel = findWelcomeChannel(guild); TextChannel channel = findWelcomeChannel(guild);
if (channel == null) return; if (channel == null) { return; }
String msg = String.format(MESSAGES.get(random.nextInt(MESSAGES.size())), mention); String msg = String.format(MESSAGES.get(random.nextInt(MESSAGES.size())), mention);
channel.sendMessage(msg).queue(); channel.sendMessage(msg).queue();