From 8413bc8314960ef9056148180666c58994931ce8 Mon Sep 17 00:00:00 2001 From: Sheldan <5037282+Sheldan@users.noreply.github.com> Date: Wed, 27 May 2020 15:39:12 +0200 Subject: [PATCH] added possibility to the ID of a user instead of a mention for a member parameter --- .../core/command/CommandReceivedHandler.java | 11 +++++++++- .../member_not_found_exception_en_US.ftl | 1 + .../exception/MemberNotFoundException.java | 20 +++++++++++++++++++ ...member_not_foound_exception_text_en_US.ftl | 1 + 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 abstracto-application/core/core-impl/src/main/resources/seedData/templates/exceptions/member_not_found_exception_en_US.ftl create mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/exception/MemberNotFoundException.java create mode 100644 abstracto-application/template-config/src/main/resources/templates/en_US/core/exception/member_not_foound_exception_text_en_US.ftl diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/CommandReceivedHandler.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/CommandReceivedHandler.java index cac2ebb36..cd13cadab 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/CommandReceivedHandler.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/CommandReceivedHandler.java @@ -12,6 +12,7 @@ import dev.sheldan.abstracto.core.command.execution.*; import dev.sheldan.abstracto.core.command.execution.UnParsedCommandParameter; import dev.sheldan.abstracto.core.Constants; import dev.sheldan.abstracto.core.exception.ChannelNotFoundException; +import dev.sheldan.abstracto.core.exception.MemberNotFoundException; import dev.sheldan.abstracto.core.exception.RoleNotFoundInDBException; import dev.sheldan.abstracto.core.models.database.ARole; import dev.sheldan.abstracto.core.service.management.ChannelManagementService; @@ -165,7 +166,15 @@ public class CommandReceivedHandler extends ListenerAdapter { } else if(param.getType().equals(TextChannel.class)){ parsedParameters.add(channelIterator.next()); } else if(param.getType().equals(Member.class)) { - parsedParameters.add(memberIterator.next()); + if(StringUtils.isNumeric(value)) { + Member memberById = message.getGuild().getMemberById(Long.parseLong(value)); + if(memberById == null) { + throw new MemberNotFoundException(); + } + parsedParameters.add(memberById); + } else { + parsedParameters.add(memberIterator.next()); + } } else if(param.getType().equals(Emote.class)) { // TODO maybe rework, this fails if two emotes are needed, and the second one is an emote, the first one a default one // the second one shadows the first one, and there are too little parameters to go of diff --git a/abstracto-application/core/core-impl/src/main/resources/seedData/templates/exceptions/member_not_found_exception_en_US.ftl b/abstracto-application/core/core-impl/src/main/resources/seedData/templates/exceptions/member_not_found_exception_en_US.ftl new file mode 100644 index 000000000..355ef7bd0 --- /dev/null +++ b/abstracto-application/core/core-impl/src/main/resources/seedData/templates/exceptions/member_not_found_exception_en_US.ftl @@ -0,0 +1 @@ +<#include "member_not_foound_exception_text"> \ No newline at end of file diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/exception/MemberNotFoundException.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/exception/MemberNotFoundException.java new file mode 100644 index 000000000..bdce825a4 --- /dev/null +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/exception/MemberNotFoundException.java @@ -0,0 +1,20 @@ +package dev.sheldan.abstracto.core.exception; + +import dev.sheldan.abstracto.templating.Templatable; + +public class MemberNotFoundException extends AbstractoRunTimeException implements Templatable { + + public MemberNotFoundException() { + super(""); + } + + @Override + public String getTemplateName() { + return "member_not_found_exception"; + } + + @Override + public Object getTemplateModel() { + return new Object(); + } +} diff --git a/abstracto-application/template-config/src/main/resources/templates/en_US/core/exception/member_not_foound_exception_text_en_US.ftl b/abstracto-application/template-config/src/main/resources/templates/en_US/core/exception/member_not_foound_exception_text_en_US.ftl new file mode 100644 index 000000000..28cef3149 --- /dev/null +++ b/abstracto-application/template-config/src/main/resources/templates/en_US/core/exception/member_not_foound_exception_text_en_US.ftl @@ -0,0 +1 @@ +Member not found. \ No newline at end of file