From d442b1e159f606a2fd8fae15ef7fcf61c14a722a Mon Sep 17 00:00:00 2001 From: alterdekim Date: Thu, 4 Jul 2024 19:38:35 +0300 Subject: [PATCH] Refactoring stuff --- .../javabot/components/BunkerBot.java | 60 ++++++++++--------- .../javabot/components/StartupListener.java | 30 ++++++++++ .../com/alterdekim/javabot/dto/UserDTO.java | 5 ++ 3 files changed, 67 insertions(+), 28 deletions(-) create mode 100644 src/main/java/com/alterdekim/javabot/components/StartupListener.java diff --git a/src/main/java/com/alterdekim/javabot/components/BunkerBot.java b/src/main/java/com/alterdekim/javabot/components/BunkerBot.java index 688892d..d944597 100644 --- a/src/main/java/com/alterdekim/javabot/components/BunkerBot.java +++ b/src/main/java/com/alterdekim/javabot/components/BunkerBot.java @@ -114,8 +114,7 @@ public class BunkerBot extends TelegramLongPollingBot { } private void joinGame(User user, Integer msgid) { - if( gameState != GameState.JOINING ) - return; + if( gameState != GameState.JOINING ) return; if( !hasPlayerWithId(user.getId()) ) { if( canWrite(user) ) { @@ -205,7 +204,7 @@ public class BunkerBot extends TelegramLongPollingBot { if( (random.nextInt(100) >= 60 || (i == (players.size()-1) && isNoOneHasScripts())) && !scripts.isEmpty() ) { ActionScript asc = (ActionScript) BotUtils.getRandomFromList(scripts, random); scripts.removeIf(p -> p.getId().longValue() == asc.getId().longValue()); - players.get(i).setScripts(Arrays.asList(asc)); + players.get(i).setScripts(Collections.singletonList(asc)); } else { players.get(i).setScripts(new ArrayList<>()); } @@ -271,11 +270,10 @@ public class BunkerBot extends TelegramLongPollingBot { globals.set("works", LuaSerializer.serializeObjectList(workService.getAllWorks())); LuaValue chunk = globals.load(script.getScriptBody()); chunk.call(); - this.players = LuaDeserializer.deserializePlayers(globals.get("players")).stream() - .map(p1 -> { - p1.setScripts(getPlayerById(p1.getTelegramId()).getScripts()); - return p1; - }).collect(Collectors.toList()); + this.players = LuaDeserializer.deserializePlayers(globals.get("players")) + .stream() + .peek(p1 -> p1.setScripts(getPlayerById(p1.getTelegramId()).getScripts())) + .collect(Collectors.toList()); } private void processNightButton(CallbackQuery callbackQuery) { @@ -400,46 +398,54 @@ public class BunkerBot extends TelegramLongPollingBot { sendApi(new SendMessage(groupId, Constants.CANT_SEND_NOT_DAY)); return; } - String message = Constants.INFO_MESSAGE; + StringBuilder message = new StringBuilder(); + message.append(Constants.INFO_MESSAGE); for( Player p : players ) { - message += p.getFirstName() + ":\n"; + message.append(p.getFirstName()); + message.append(":\n"); InfoSections s = p.getInfoSections(); if(s.getIsGenderShowed()) { - message += String.format(Constants.GENDER_MESAGE, p.getFirstName(), getStringById(p.getGender().getGenderTextId()), + message.append(String.format(Constants.GENDER_MESAGE, p.getFirstName(), getStringById(p.getGender().getGenderTextId()), p.getGender().getCanDie() ? Constants.TRUE : Constants.FALSE, p.getGender().getIsMale() ? Constants.TRUE : Constants.FALSE, - p.getGender().getIsFemale() ? Constants.TRUE : Constants.FALSE) + "\n"; + p.getGender().getIsFemale() ? Constants.TRUE : Constants.FALSE)); + message.append("\n"); } if(s.getIsAgeShowed()) { - message += String.format(Constants.AGE_MESSAGE, p.getFirstName(), p.getAge()) + "\n"; + message.append(String.format(Constants.AGE_MESSAGE, p.getFirstName(), p.getAge())); + message.append("\n"); } if(s.getIsLuggageShowed()) { - message += String.format(Constants.LUGG_MESSAGE, p.getFirstName(), + message.append(String.format(Constants.LUGG_MESSAGE, p.getFirstName(), getStringById(p.getLuggage().getTextNameId()), - getStringById(p.getLuggage().getTextDescId())) + "\n"; + getStringById(p.getLuggage().getTextDescId()))); + message.append("\n"); } if(s.getIsHealthShowed()) { - message += String.format(Constants.HEALTH_MESSAGE, p.getFirstName(), getStringById(p.getHealth().getTextNameId()), + message.append(String.format(Constants.HEALTH_MESSAGE, p.getFirstName(), getStringById(p.getHealth().getTextNameId()), getStringById(p.getHealth().getTextDescId()), (int) (p.getHealth().getHealth_index()*100f), - p.getHealth().getIsChildfree() ? Constants.TRUE : Constants.FALSE) + "\n"; + p.getHealth().getIsChildfree() ? Constants.TRUE : Constants.FALSE)); + message.append("\n"); } if(s.getIsWorkShowed()) { - message += String.format(Constants.WORK_MESSAGE, p.getFirstName(), + message.append(String.format(Constants.WORK_MESSAGE, p.getFirstName(), getStringById(p.getWork().getTextNameId()), - getStringById(p.getWork().getTextDescId())) + "\n"; + getStringById(p.getWork().getTextDescId()))); + message.append("\n"); } if(s.getIsHobbyShowed()) { - message += String.format(Constants.HOBBY_MESSAGE, p.getFirstName(), - getStringById(p.getHobby().getTextDescId())) + "\n"; + message.append(String.format(Constants.HOBBY_MESSAGE, p.getFirstName(), + getStringById(p.getHobby().getTextDescId()))); + message.append("\n"); } - message += "\n"; + message.append("\n"); } - sendApi(new SendMessage(groupId, message)); + sendApi(new SendMessage(groupId, message.toString())); } private void endVote() { - Integer max = dayNightFields.getPoll().values().stream().max(Integer::compareTo).get(); + Integer max = dayNightFields.getPoll().values().stream().max(Integer::compareTo).orElse(0); long count = dayNightFields.getPoll().values().stream().filter(p -> p.equals(max)).count(); SendMessage sendMessage = new SendMessage(groupId, Constants.ENDVOTE); if( count > 1 ) { @@ -529,8 +535,7 @@ public class BunkerBot extends TelegramLongPollingBot { return; } - if( !(update.hasMessage() && update.getMessage().hasText() && update.getMessage().isCommand()) ) - return; + if( !(update.hasMessage() && update.getMessage().hasText() && update.getMessage().isCommand()) ) return; String chatId = update.getMessage().getChatId()+""; @@ -541,8 +546,7 @@ public class BunkerBot extends TelegramLongPollingBot { sendApi(new SendMessage(chatId, Constants.GROUP_SET)); } - if( !chatId.equals(groupId) ) - return; + if( !chatId.equals(groupId) ) return; if ( (update.getMessage().getText().equals(Commands.START_GAME + "@" + getBotUsername()) || update.getMessage().getText().equals(Commands.START_GAME) ) && diff --git a/src/main/java/com/alterdekim/javabot/components/StartupListener.java b/src/main/java/com/alterdekim/javabot/components/StartupListener.java new file mode 100644 index 0000000..9830460 --- /dev/null +++ b/src/main/java/com/alterdekim/javabot/components/StartupListener.java @@ -0,0 +1,30 @@ +package com.alterdekim.javabot.components; + +import com.alterdekim.javabot.dto.UserDTO; +import com.alterdekim.javabot.service.UserService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.event.ContextRefreshedEvent; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; + +import java.util.UUID; + + +@Slf4j +@Component +public class StartupListener { + + @Autowired + private UserService userService; + + private static final String ADMIN_USERNAME = "admin"; + + @EventListener + public void onApplicationEvent(ContextRefreshedEvent event) { + if( userService.findByUsername(ADMIN_USERNAME) != null ) return; + String pwd = UUID.randomUUID().toString(); + log.info("Your admin account password is: {}", pwd); + userService.saveUser(new UserDTO(ADMIN_USERNAME, pwd)); + } +} diff --git a/src/main/java/com/alterdekim/javabot/dto/UserDTO.java b/src/main/java/com/alterdekim/javabot/dto/UserDTO.java index 90ad8cd..21fb59d 100644 --- a/src/main/java/com/alterdekim/javabot/dto/UserDTO.java +++ b/src/main/java/com/alterdekim/javabot/dto/UserDTO.java @@ -20,4 +20,9 @@ public class UserDTO { private String invite_code; private String lang; + + public UserDTO(String username, String password) { + this.username = username; + this.password = password; + } }