use of pokeraidbot.domain.raid.Raid in project pokeraidbot by magnusmickelsson.
the class AlterRaidCommand method deleteRaidAndGroups.
private void deleteRaidAndGroups(CommandEvent commandEvent, Config config, User user, String userName, String[] args) {
StringBuilder gymNameBuilder;
String gymName;
Gym gym;
gymNameBuilder = new StringBuilder();
for (int i = 1; i < args.length; i++) {
gymNameBuilder.append(args[i]).append(" ");
}
gymName = gymNameBuilder.toString().trim();
gym = gymRepository.search(user, gymName, config.getRegion());
Raid deleteRaid = raidRepository.getActiveRaidOrFallbackToExRaid(gym, config.getRegion(), user);
verifyPermission(localeService, commandEvent, user, deleteRaid, config);
final boolean userIsNotAdministrator = !isUserAdministrator(commandEvent);
final boolean userIsNotMod = !isUserServerMod(commandEvent, config);
if ((userIsNotAdministrator && userIsNotMod) && deleteRaid.getSignUps().size() > 0) {
throw new UserMessedUpException(userName, localeService.getMessageFor(LocaleService.ONLY_ADMINS_REMOVE_RAID, localeService.getLocaleForUser(user)));
}
final Set<RaidGroup> groups = raidRepository.getGroups(deleteRaid);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Deleting " + groups.size() + " groups associated with raid " + deleteRaid + "... ");
}
final int numberOfGroups = groups.size();
for (RaidGroup group : groups) {
final EmoticonSignUpMessageListener listener = getListenerForGroup(deleteRaid, group);
if (listener != null) {
final MessageChannel channel = getChannel(commandEvent.getGuild(), group.getChannel());
if (channel != null) {
NewRaidGroupCommand.cleanUpRaidGroupAndDeleteSignUpsIfPossible(channel, group.getStartsAt(), deleteRaid.getId(), listener, raidRepository, botService, group.getId());
} else {
LOGGER.debug("Could not find channel " + group.getChannel() + " in guild " + commandEvent.getGuild().getName());
}
}
}
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Groups deleted for raid " + deleteRaid);
}
if (raidRepository.delete(deleteRaid)) {
commandEvent.reactSuccess();
removeOriginMessageIfConfigSaysSo(config, commandEvent);
LOGGER.info("Deleted raid (and " + numberOfGroups + " related groups): " + deleteRaid);
} else {
throw new UserMessedUpException(userName, localeService.getMessageFor(LocaleService.RAID_NOT_EXISTS, localeService.getLocaleForUser(user)));
}
}
use of pokeraidbot.domain.raid.Raid in project pokeraidbot by magnusmickelsson.
the class AlterRaidCommand method changeOrDeleteGroup.
private void changeOrDeleteGroup(CommandEvent commandEvent, Config config, User user, String userName, String[] args) {
String whatToChangeTo;
String gymName;
Gym gym;
Raid raid;
whatToChangeTo = args[1].trim().toLowerCase();
String originalTime = preProcessTimeString(args[2].trim());
LocalTime existingGroupTimeIfAvailable = null;
try {
existingGroupTimeIfAvailable = Utils.parseTime(user, originalTime, localeService);
} catch (UserMessedUpException e) {
// Input was not a time
}
gymName = getGymName(args, existingGroupTimeIfAvailable);
gym = gymRepository.search(user, gymName, config.getRegion());
raid = raidRepository.getActiveRaidOrFallbackToExRaid(gym, config.getRegion(), user);
if (whatToChangeTo.equals("remove")) {
final Set<RaidGroup> groups = raidRepository.getGroups(raid);
final Set<EmoticonSignUpMessageListener> listenersToCheck = getListenersToCheck(commandEvent, config, user, raid, groups);
EmoticonSignUpMessageListener listener = listenersToCheck.iterator().next();
verifyIsModOrHasGroupForRaid(commandEvent, user, raid, config);
RaidGroup theGroupToDelete = getGroupToDelete(user, existingGroupTimeIfAvailable, groups, raid);
assertPermissionToManageThisGroup(user, theGroupToDelete, commandEvent, config);
NewRaidGroupCommand.cleanUpGroupMessageAndEntity(commandEvent.getChannel(), raid.getId(), listener, raidRepository, botService, theGroupToDelete.getId(), raid.toString());
final String message = localeService.getMessageFor(LocaleService.GROUP_DELETED, localeService.getLocaleForUser(user));
replyBasedOnConfig(config, commandEvent, message);
} else {
LocalTime newTime = parseTime(user, whatToChangeTo, localeService);
LocalDateTime newDateTime = LocalDateTime.of(raid.getEndOfRaid().toLocalDate(), newTime);
checkIfInputIsValidAndUserHasRights(commandEvent, config, user, raid, newDateTime);
if (changeGroupTime(commandEvent, config, user, userName, raid, newDateTime))
return;
}
removeOriginMessageIfConfigSaysSo(config, commandEvent);
}
use of pokeraidbot.domain.raid.Raid in project pokeraidbot by magnusmickelsson.
the class EggHatchedCommand method executeWithConfig.
@Override
protected void executeWithConfig(CommandEvent commandEvent, Config config) {
final User user = commandEvent.getAuthor();
final String userName = user.getName();
final String[] args = commandEvent.getArgs().split(" ");
if (args.length < 2) {
throw new UserMessedUpException(userName, localeService.getMessageFor(LocaleService.BAD_SYNTAX, localeService.getLocaleForUser(user), "!raid hatch Ho-Oh solna platform"));
}
String pokemonName = args[0].trim().toLowerCase();
final String[] gymArguments = ArrayUtils.removeAll(args, 0);
String gymName = StringUtils.join(gymArguments, " ");
final String region = config.getRegion();
final Gym gym = gymRepository.search(user, gymName, region);
final Raid raid = raidRepository.getActiveRaidOrFallbackToExRaid(gym, region, user);
final Pokemon pokemon = pokemonRepository.search(pokemonName, user);
final PokemonRaidInfo existingRaidInfo = raidStrategyService.getRaidInfo(raid.getPokemon());
final int newBossTier = raidStrategyService.getRaidInfo(pokemon).getBossTier();
if (!raid.getPokemon().isEgg()) {
throw new UserMessedUpException(user, localeService.getMessageFor(LocaleService.EGG_ALREADY_HATCHED, localeService.getLocaleForUser(user), raid.getPokemon().toString()));
}
if (pokemon.isEgg() || newBossTier != existingRaidInfo.getBossTier()) {
throw new UserMessedUpException(user, localeService.getMessageFor(LocaleService.EGG_WRONG_TIER, localeService.getLocaleForUser(user)));
}
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Trying to hatch raid " + raid + " into " + pokemonName);
}
AlterRaidCommand.changePokemon(gymRepository, localeService, pokemonRepository, raidRepository, commandEvent, config, user, userName, pokemonName, gymArguments);
}
use of pokeraidbot.domain.raid.Raid in project pokeraidbot by magnusmickelsson.
the class NewRaidCommand method executeWithConfig.
@Override
protected void executeWithConfig(CommandEvent commandEvent, Config config) {
final User user = commandEvent.getAuthor();
final String[] args = commandEvent.getArgs().replaceAll("\\s{1,3}", " ").split(" ");
if (args.length < 3) {
throw new UserMessedUpException(user, localeService.getMessageFor(LocaleService.BAD_SYNTAX, localeService.getLocaleForUser(user), "!raid new ho-oh 10:00 solna platform"));
}
String pokemonName = args[0];
final Pokemon pokemon = pokemonRepository.search(pokemonName, user);
String timeString = args[1];
LocalTime endsAtTime = Utils.parseTime(user, timeString, localeService);
LocalDateTime endsAt = LocalDateTime.of(LocalDate.now(), endsAtTime);
assertTimeNotInNoRaidTimespan(user, endsAtTime, localeService);
assertTimeNotMoreThanXHoursFromNow(user, endsAtTime, localeService, 2);
assertCreateRaidTimeNotBeforeNow(user, endsAt, localeService);
StringBuilder gymNameBuilder = new StringBuilder();
for (int i = 2; i < args.length; i++) {
gymNameBuilder.append(args[i]).append(" ");
}
String gymName = gymNameBuilder.toString().trim();
final Gym gym = gymRepository.search(user, gymName, config.getRegion());
final Raid raid = new Raid(pokemon, endsAt, gym, localeService, config.getRegion());
raidRepository.newRaid(user, raid, commandEvent.getGuild(), config, "!raid new " + raid.getPokemon().getName() + " " + printTimeIfSameDay(raid.getEndOfRaid()) + " " + raid.getGym().getName());
final Locale locale = localeService.getLocaleForUser(user);
replyBasedOnConfigAndRemoveAfter(config, commandEvent, localeService.getMessageFor(LocaleService.NEW_RAID_CREATED, locale, raid.toString(locale)), BotServerMain.timeToRemoveFeedbackInSeconds);
}
Aggregations