From f943247e7d04903e90f873700ef2ab8b08847650 Mon Sep 17 00:00:00 2001
From: Sheldan <5037282+Sheldan@users.noreply.github.com>
Date: Thu, 10 Jun 2021 01:11:51 +0200
Subject: [PATCH] [OPB-25] implementation of FAQ commands
---
README.md | 2 +-
application/executable/pom.xml | 6 +
application/oneplus-bot-modules/faq/pom.xml | 48 +
.../faq/src/main/assembly/liquibase.xml | 18 +
.../bot/modules/faq/command/DeleteFAQ.java | 75 +
.../bot/modules/faq/command/ExportFAQ.java | 74 +
.../oneplus/bot/modules/faq/command/FAQ.java | 115 ++
.../bot/modules/faq/command/FAQUsage.java | 85 +
.../bot/modules/faq/command/ImportFAQ.java | 111 ++
.../modules/faq/command/ListFAQCommands.java | 63 +
.../modules/faq/config/FAQFeatureConfig.java | 34 +
.../faq/config/FAQFeatureDefinition.java | 15 +
.../modules/faq/config/FAQFeatureMode.java | 15 +
.../faq/config/FAQModuleDefinition.java | 21 +
.../bot/modules/faq/config/FAQProperties.java | 10 +
.../GlobalChannelGroupDelayActionConfig.java | 24 +
...GlobalChannelGroupDelayedActionConfig.java | 17 +
.../GlobalChannelGroupSetupDelayedAction.java | 49 +
.../converter/FAQCommandConfigConverter.java | 87 ++
.../ListFAQCommandsModelConverter.java | 58 +
...DuplicatedCommandNameOrAliasException.java | 29 +
.../DuplicatedFAQCommandAliasException.java | 28 +
.../FAQCommandAliasShadowingException.java | 28 +
.../FAQCommandNotFoundException.java | 26 +
...ndResponseDuplicatedPositionException.java | 27 +
...obalFAQCommandConfigMismatchException.java | 26 +
.../GlobalFAQCommandResponsesException.java | 28 +
.../NoFAQResponseFoundException.java | 20 +
.../FAQAsyncChannelGroupCreatedListener.java | 49 +
.../FAQChannelGroupDeletedListener.java | 31 +
.../command/config/FaqCommandConfig.java | 18 +
.../config/FaqCommandResponseConfig.java | 16 +
.../FaqCommandResponseEmbedAuthorConfig.java | 14 +
.../FaqCommandResponseEmbedColorConfig.java | 18 +
.../config/FaqCommandResponseEmbedConfig.java | 16 +
.../FaqCommandResponseMessageConfig.java | 15 +
.../command/faq/FAQResponseMessageModel.java | 33 +
.../models/command/faq/FAQResponseModel.java | 18 +
.../faquses/FAQCommandResponseUsage.java | 13 +
.../command/faquses/FAQCommandUsage.java | 15 +
.../models/command/faquses/FAQUsageModel.java | 14 +
...stFAQCommandsCommandChannelGroupModel.java | 11 +
.../list/ListFAQCommandsCommandModel.java | 14 +
.../command/list/ListFAQCommandsModel.java | 16 +
.../faq/models/database/FAQChannelGroup.java | 34 +
.../database/FAQChannelGroupCommand.java | 44 +
.../faq/models/database/FAQCommand.java | 52 +
.../faq/models/database/FAQCommandAlias.java | 31 +
.../models/database/FAQCommandResponse.java | 55 +
.../database/embed/ChannelGroupCommandId.java | 21 +
.../database/embed/CommandResponseId.java | 23 +
.../database/embed/FAQCommandAliasId.java | 21 +
.../DuplicatedCommandNameExceptionModel.java | 14 +
...plicatedFAQCommandAliasExceptionModel.java | 14 +
...AQCommandAliasShadowingExceptionModel.java | 13 +
.../FAQCommandNotFoundExceptionModel.java | 12 +
...ponseDuplicatedPositionExceptionModel.java | 13 +
.../GlobalCommandResponseExceptionModel.java | 14 +
...AQCommandConfigMismatchExceptionModel.java | 13 +
.../FAQChannelGroupCommandRepository.java | 16 +
.../repository/FAQChannelGroupRepository.java | 13 +
.../repository/FAQCommandAliasRepository.java | 14 +
.../faq/repository/FAQCommandRepository.java | 17 +
.../FAQCommandResponseRepository.java | 10 +
.../faq/service/FAQResponseServiceBean.java | 175 +++
.../modules/faq/service/FAQServiceBean.java | 411 +++++
.../faq/service/FAQUsageServiceBean.java | 68 +
.../faq/service/FAQValidationServiceBean.java | 41 +
...nnelGroupCommandManagementServiceBean.java | 77 +
.../FAQChannelGroupManagementServiceBean.java | 47 +
.../FAQCommandAliasManagementService.java | 53 +
.../FAQCommandManagementServiceBean.java | 59 +
...QCommandResponseManagementServiceBean.java | 68 +
.../faq/src/main/resources/faq.properties | 8 +
.../resources/migrations/1.4.4/collection.xml | 11 +
.../1.4.4/seedData/channel_group_type.xml | 16 +
.../migrations/1.4.4/seedData/command.xml | 43 +
.../migrations/1.4.4/seedData/data.xml | 13 +
.../migrations/1.4.4/seedData/feature.xml | 14 +
.../migrations/1.4.4/seedData/module.xml | 14 +
.../1.4.4/tables/faq_channel_group.xml | 36 +
.../tables/faq_channel_group_command.xml | 38 +
.../migrations/1.4.4/tables/faq_command.xml | 45 +
.../1.4.4/tables/faq_command_alias.xml | 39 +
.../1.4.4/tables/faq_command_response.xml | 59 +
.../migrations/1.4.4/tables/tables.xml | 14 +
.../main/resources/migrations/dbchangelog.xsd | 1386 +++++++++++++++++
.../resources/migrations/faq-changeLog.xml | 10 +
.../resources/validation/createScheme.json | 189 +++
.../news/{commands => command}/News.java | 2 +-
.../{commands => command}/UpdateNews.java | 2 +-
application/oneplus-bot-modules/pom.xml | 1 +
deployment/image-packaging/pom.xml | 31 +
.../deployment/config/artifact_versions.json | 7 +-
pom.xml | 4 +-
.../faq-templates/pom.xml | 43 +
.../src/main/assembly/assembly.xml | 15 +
.../FAQUsage_response_embed_en_US.ftl | 14 +
.../commands/faq/FAQ_response_embed_en_US.ftl | 21 +
..._response_no_command_found_embed_en_US.ftl | 4 +
.../listFAQCommands_response_embed_en_US.ftl | 20 +
...cated_command_or_alias_exception_en_US.ftl | 2 +
...ated_faq_command_alias_exception_en_US.ftl | 4 +
...ommand_alias_shadowing_exception_en_US.ftl | 3 +
.../faq_command_not_found_exception_en_US.ftl | 2 +
...se_duplicated_position_exception_en_US.ftl | 3 +
...ommand_config_mismatch_exception_en_US.ftl | 2 +
..._faq_command_responses_exception_en_US.ftl | 2 +
.../no_faq_response_found_exception_en_US.ftl | 1 +
.../news-templates/pom.xml | 2 +-
.../oneplus-bot-modules-templates/pom.xml | 1 +
.../translations/faq-translations/pom.xml | 36 +
.../src/main/assembly/assembly.xml | 15 +
...found_message_available_commands_en_US.ftl | 1 +
...esponse_no_command_found_message_en_US.ftl | 1 +
...ommand_found_message_no_commands_en_US.ftl | 1 +
.../FAQ/help/FAQ_description_en_US.ftl | 1 +
.../commands/FAQ/help/FAQ_long_help_en_US.ftl | 3 +
.../FAQ/help/FAQ_parameter_channel_en_US.ftl | 1 +
.../FAQ/help/FAQ_parameter_command_en_US.ftl | 1 +
.../FAQUsage_command_display_en_US.ftl | 1 +
.../FAQUsage/FAQUsage_no_usages_en_US.ftl | 1 +
.../FAQUsage/FAQUsage_usage_display_en_US.ftl | 1 +
.../help/FAQUsage_description_en_US.ftl | 1 +
.../help/FAQUsage_long_help_en_US.ftl | 2 +
.../FAQUsage_parameter_commandName_en_US.ftl | 1 +
.../help/deleteFAQ_description_en_US.ftl | 1 +
.../help/deleteFAQ_long_help_en_US.ftl | 2 +
.../deleteFAQ_parameter_commandName_en_US.ftl | 1 +
.../help/exportFAQ_description_en_US.ftl | 1 +
.../help/exportFAQ_long_help_en_US.ftl | 2 +
.../exportFAQ_parameter_commandName_en_US.ftl | 1 +
.../help/importFAQ_description_en_US.ftl | 1 +
.../help/importFAQ_long_help_en_US.ftl | 1 +
.../help/importFAQ_parameter_file_en_US.ftl | 1 +
.../listFAQCommands_description_en_US.ftl | 1 +
.../help/listFAQCommands_long_help_en_US.ftl | 1 +
...ds_channel_group_display_aliases_en_US.ftl | 1 +
...AQCommands_channel_group_display_en_US.ftl | 1 +
...AQCommands_channel_groups_header_en_US.ftl | 1 +
.../listFAQCommands_command_display_en_US.ftl | 1 +
.../listFAQCommands_command_header_en_US.ftl | 1 +
.../listFAQCommands_no_commands_en_US.ftl | 1 +
.../channel_group_type_faq_name_en_US.ftl | 1 +
.../en_US/config/feature_faq_en_US.ftl | 1 +
.../module_faqModule_description_en_US.ftl | 1 +
.../setup_global_channel_group_info_en_US.ftl | 1 +
...mmand_or_alias_exception_message_en_US.ftl | 1 +
..._command_alias_exception_message_en_US.ftl | 1 +
...lias_shadowing_exception_message_en_US.ftl | 1 +
...mand_not_found_exception_message_en_US.ftl | 1 +
...cated_position_exception_message_en_US.ftl | 1 +
...onfig_mismatch_exception_message_en_US.ftl | 2 +
...mand_responses_exception_message_en_US.ftl | 1 +
...response_found_exception_message_en_US.ftl | 1 +
.../translations/news-translations/pom.xml | 2 +-
templates/translations/pom.xml | 1 +
157 files changed, 5106 insertions(+), 10 deletions(-)
create mode 100644 application/oneplus-bot-modules/faq/pom.xml
create mode 100644 application/oneplus-bot-modules/faq/src/main/assembly/liquibase.xml
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/command/DeleteFAQ.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/command/ExportFAQ.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/command/FAQ.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/command/FAQUsage.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/command/ImportFAQ.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/command/ListFAQCommands.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/config/FAQFeatureConfig.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/config/FAQFeatureDefinition.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/config/FAQFeatureMode.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/config/FAQModuleDefinition.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/config/FAQProperties.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/config/setup/GlobalChannelGroupDelayActionConfig.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/config/setup/GlobalChannelGroupDelayedActionConfig.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/config/setup/GlobalChannelGroupSetupDelayedAction.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/converter/FAQCommandConfigConverter.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/converter/ListFAQCommandsModelConverter.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/exception/DuplicatedCommandNameOrAliasException.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/exception/DuplicatedFAQCommandAliasException.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/exception/FAQCommandAliasShadowingException.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/exception/FAQCommandNotFoundException.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/exception/FAQCommandResponseDuplicatedPositionException.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/exception/GlobalFAQCommandConfigMismatchException.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/exception/GlobalFAQCommandResponsesException.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/exception/NoFAQResponseFoundException.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/listener/FAQAsyncChannelGroupCreatedListener.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/listener/FAQChannelGroupDeletedListener.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/command/config/FaqCommandConfig.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/command/config/FaqCommandResponseConfig.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/command/config/FaqCommandResponseEmbedAuthorConfig.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/command/config/FaqCommandResponseEmbedColorConfig.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/command/config/FaqCommandResponseEmbedConfig.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/command/config/FaqCommandResponseMessageConfig.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/command/faq/FAQResponseMessageModel.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/command/faq/FAQResponseModel.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/command/faquses/FAQCommandResponseUsage.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/command/faquses/FAQCommandUsage.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/command/faquses/FAQUsageModel.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/command/list/ListFAQCommandsCommandChannelGroupModel.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/command/list/ListFAQCommandsCommandModel.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/command/list/ListFAQCommandsModel.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/database/FAQChannelGroup.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/database/FAQChannelGroupCommand.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/database/FAQCommand.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/database/FAQCommandAlias.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/database/FAQCommandResponse.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/database/embed/ChannelGroupCommandId.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/database/embed/CommandResponseId.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/database/embed/FAQCommandAliasId.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/exception/DuplicatedCommandNameExceptionModel.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/exception/DuplicatedFAQCommandAliasExceptionModel.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/exception/FAQCommandAliasShadowingExceptionModel.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/exception/FAQCommandNotFoundExceptionModel.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/exception/FAQCommandResponseDuplicatedPositionExceptionModel.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/exception/GlobalCommandResponseExceptionModel.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/models/exception/GlobalFAQCommandConfigMismatchExceptionModel.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/repository/FAQChannelGroupCommandRepository.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/repository/FAQChannelGroupRepository.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/repository/FAQCommandAliasRepository.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/repository/FAQCommandRepository.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/repository/FAQCommandResponseRepository.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/service/FAQResponseServiceBean.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/service/FAQServiceBean.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/service/FAQUsageServiceBean.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/service/FAQValidationServiceBean.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/service/management/FAQChannelGroupCommandManagementServiceBean.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/service/management/FAQChannelGroupManagementServiceBean.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/service/management/FAQCommandAliasManagementService.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/service/management/FAQCommandManagementServiceBean.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/service/management/FAQCommandResponseManagementServiceBean.java
create mode 100644 application/oneplus-bot-modules/faq/src/main/resources/faq.properties
create mode 100644 application/oneplus-bot-modules/faq/src/main/resources/migrations/1.4.4/collection.xml
create mode 100644 application/oneplus-bot-modules/faq/src/main/resources/migrations/1.4.4/seedData/channel_group_type.xml
create mode 100644 application/oneplus-bot-modules/faq/src/main/resources/migrations/1.4.4/seedData/command.xml
create mode 100644 application/oneplus-bot-modules/faq/src/main/resources/migrations/1.4.4/seedData/data.xml
create mode 100644 application/oneplus-bot-modules/faq/src/main/resources/migrations/1.4.4/seedData/feature.xml
create mode 100644 application/oneplus-bot-modules/faq/src/main/resources/migrations/1.4.4/seedData/module.xml
create mode 100644 application/oneplus-bot-modules/faq/src/main/resources/migrations/1.4.4/tables/faq_channel_group.xml
create mode 100644 application/oneplus-bot-modules/faq/src/main/resources/migrations/1.4.4/tables/faq_channel_group_command.xml
create mode 100644 application/oneplus-bot-modules/faq/src/main/resources/migrations/1.4.4/tables/faq_command.xml
create mode 100644 application/oneplus-bot-modules/faq/src/main/resources/migrations/1.4.4/tables/faq_command_alias.xml
create mode 100644 application/oneplus-bot-modules/faq/src/main/resources/migrations/1.4.4/tables/faq_command_response.xml
create mode 100644 application/oneplus-bot-modules/faq/src/main/resources/migrations/1.4.4/tables/tables.xml
create mode 100644 application/oneplus-bot-modules/faq/src/main/resources/migrations/dbchangelog.xsd
create mode 100644 application/oneplus-bot-modules/faq/src/main/resources/migrations/faq-changeLog.xml
create mode 100644 application/oneplus-bot-modules/faq/src/main/resources/validation/createScheme.json
rename application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/{commands => command}/News.java (97%)
rename application/oneplus-bot-modules/news/src/main/java/dev/sheldan/oneplus/bot/modules/news/{commands => command}/UpdateNews.java (97%)
create mode 100644 templates/oneplus-bot-modules-templates/faq-templates/pom.xml
create mode 100644 templates/oneplus-bot-modules-templates/faq-templates/src/main/assembly/assembly.xml
create mode 100644 templates/oneplus-bot-modules-templates/faq-templates/src/main/resources/en_US/commands/FAQUsage/FAQUsage_response_embed_en_US.ftl
create mode 100644 templates/oneplus-bot-modules-templates/faq-templates/src/main/resources/en_US/commands/faq/FAQ_response_embed_en_US.ftl
create mode 100644 templates/oneplus-bot-modules-templates/faq-templates/src/main/resources/en_US/commands/faq/FAQ_response_no_command_found_embed_en_US.ftl
create mode 100644 templates/oneplus-bot-modules-templates/faq-templates/src/main/resources/en_US/commands/listFAQCommands/listFAQCommands_response_embed_en_US.ftl
create mode 100644 templates/oneplus-bot-modules-templates/faq-templates/src/main/resources/en_US/exceptions/duplicated_command_or_alias_exception_en_US.ftl
create mode 100644 templates/oneplus-bot-modules-templates/faq-templates/src/main/resources/en_US/exceptions/duplicated_faq_command_alias_exception_en_US.ftl
create mode 100644 templates/oneplus-bot-modules-templates/faq-templates/src/main/resources/en_US/exceptions/faq_command_alias_shadowing_exception_en_US.ftl
create mode 100644 templates/oneplus-bot-modules-templates/faq-templates/src/main/resources/en_US/exceptions/faq_command_not_found_exception_en_US.ftl
create mode 100644 templates/oneplus-bot-modules-templates/faq-templates/src/main/resources/en_US/exceptions/faq_command_response_duplicated_position_exception_en_US.ftl
create mode 100644 templates/oneplus-bot-modules-templates/faq-templates/src/main/resources/en_US/exceptions/global_faq_command_config_mismatch_exception_en_US.ftl
create mode 100644 templates/oneplus-bot-modules-templates/faq-templates/src/main/resources/en_US/exceptions/global_faq_command_responses_exception_en_US.ftl
create mode 100644 templates/oneplus-bot-modules-templates/faq-templates/src/main/resources/en_US/exceptions/no_faq_response_found_exception_en_US.ftl
create mode 100644 templates/translations/faq-translations/pom.xml
create mode 100644 templates/translations/faq-translations/src/main/assembly/assembly.xml
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/FAQ/FAQ_response_no_command_found_message_available_commands_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/FAQ/FAQ_response_no_command_found_message_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/FAQ/FAQ_response_no_command_found_message_no_commands_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/FAQ/help/FAQ_description_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/FAQ/help/FAQ_long_help_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/FAQ/help/FAQ_parameter_channel_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/FAQ/help/FAQ_parameter_command_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/FAQUsage/FAQUsage_command_display_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/FAQUsage/FAQUsage_no_usages_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/FAQUsage/FAQUsage_usage_display_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/FAQUsage/help/FAQUsage_description_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/FAQUsage/help/FAQUsage_long_help_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/FAQUsage/help/FAQUsage_parameter_commandName_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/deleteFAQ/help/deleteFAQ_description_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/deleteFAQ/help/deleteFAQ_long_help_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/deleteFAQ/help/deleteFAQ_parameter_commandName_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/exportFAQ/help/exportFAQ_description_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/exportFAQ/help/exportFAQ_long_help_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/exportFAQ/help/exportFAQ_parameter_commandName_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/importFAQ/help/importFAQ_description_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/importFAQ/help/importFAQ_long_help_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/importFAQ/help/importFAQ_parameter_file_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/listFAQCommands/help/listFAQCommands_description_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/listFAQCommands/help/listFAQCommands_long_help_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/listFAQCommands/listFAQCommands_channel_group_display_aliases_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/listFAQCommands/listFAQCommands_channel_group_display_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/listFAQCommands/listFAQCommands_channel_groups_header_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/listFAQCommands/listFAQCommands_command_display_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/listFAQCommands/listFAQCommands_command_header_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/commands/listFAQCommands/listFAQCommands_no_commands_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/config/channel_group_type_faq_name_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/config/feature_faq_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/config/module_faqModule_description_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/config/setup_global_channel_group_info_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/exception/duplicated_command_or_alias_exception_message_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/exception/duplicated_faq_command_alias_exception_message_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/exception/faq_command_alias_shadowing_exception_message_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/exception/faq_command_not_found_exception_message_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/exception/faq_command_response_duplicated_position_exception_message_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/exception/global_faq_command_config_mismatch_exception_message_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/exception/global_faq_command_responses_exception_message_en_US.ftl
create mode 100644 templates/translations/faq-translations/src/main/resources/en_US/exception/no_faq_response_found_exception_message_en_US.ftl
diff --git a/README.md b/README.md
index 720c580..c18a86b 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,6 @@ and most of them will be in [abstracto](https://github.com/Sheldan/abstracto), b
The migration of the existing data from the database is handled via one time migration, and can be found [here](https://github.com/Sheldan/OnePlusBot-migration).
Custom features which were ported
- - [ ] FAQ
+ - [x] FAQ
- [x] Setup channel handling
- [x] Referral link handling
diff --git a/application/executable/pom.xml b/application/executable/pom.xml
index 8089a56..6df3350 100644
--- a/application/executable/pom.xml
+++ b/application/executable/pom.xml
@@ -154,6 +154,12 @@
${project.version}
+
+ dev.sheldan.oneplus.bot.application.modules
+ faq
+ ${project.version}
+
+
\ No newline at end of file
diff --git a/application/oneplus-bot-modules/faq/pom.xml b/application/oneplus-bot-modules/faq/pom.xml
new file mode 100644
index 0000000..5fe6c55
--- /dev/null
+++ b/application/oneplus-bot-modules/faq/pom.xml
@@ -0,0 +1,48 @@
+
+
+
+ oneplus-bot-modules
+ dev.sheldan.oneplus.bot.application.modules
+ 1.4.4-SNAPSHOT
+
+ 4.0.0
+
+ faq
+
+
+ 8
+ 8
+
+
+
+
+
+ maven-assembly-plugin
+
+
+ src/main/assembly/liquibase.xml
+
+
+
+
+ make-assembly
+ package
+
+ single
+
+
+
+
+
+
+
+
+
+ com.google.code.gson
+ gson
+
+
+
+
\ No newline at end of file
diff --git a/application/oneplus-bot-modules/faq/src/main/assembly/liquibase.xml b/application/oneplus-bot-modules/faq/src/main/assembly/liquibase.xml
new file mode 100644
index 0000000..8b4774f
--- /dev/null
+++ b/application/oneplus-bot-modules/faq/src/main/assembly/liquibase.xml
@@ -0,0 +1,18 @@
+
+ liquibase
+
+ zip
+
+ false
+
+
+ .
+ ${project.basedir}/src/main/resources/migrations
+
+ **/*
+
+
+
+
\ No newline at end of file
diff --git a/application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/command/DeleteFAQ.java b/application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/command/DeleteFAQ.java
new file mode 100644
index 0000000..04f6615
--- /dev/null
+++ b/application/oneplus-bot-modules/faq/src/main/java/dev/sheldan/oneplus/bot/modules/faq/command/DeleteFAQ.java
@@ -0,0 +1,75 @@
+package dev.sheldan.oneplus.bot.modules.faq.command;
+
+import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
+import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
+import dev.sheldan.abstracto.core.command.config.HelpInfo;
+import dev.sheldan.abstracto.core.command.config.Parameter;
+import dev.sheldan.abstracto.core.command.execution.CommandContext;
+import dev.sheldan.abstracto.core.command.execution.CommandResult;
+import dev.sheldan.abstracto.core.config.FeatureDefinition;
+import dev.sheldan.abstracto.core.models.database.AServer;
+import dev.sheldan.abstracto.core.service.ChannelService;
+import dev.sheldan.abstracto.core.service.JSONValidationService;
+import dev.sheldan.abstracto.core.service.management.ServerManagementService;
+import dev.sheldan.abstracto.core.utils.FileService;
+import dev.sheldan.oneplus.bot.modules.faq.config.FAQFeatureDefinition;
+import dev.sheldan.oneplus.bot.modules.faq.config.FAQModuleDefinition;
+import dev.sheldan.oneplus.bot.modules.faq.service.FAQServiceBean;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+
+@Component
+@Slf4j
+public class DeleteFAQ extends AbstractConditionableCommand {
+
+ @Autowired
+ private FileService fileService;
+
+ @Autowired
+ private FAQServiceBean faqServiceBean;
+
+ @Autowired
+ private ChannelService channelService;
+
+ @Autowired
+ private JSONValidationService jsonValidationService;
+
+ @Autowired
+ private ServerManagementService serverManagementService;
+
+ @Override
+ public CompletableFuture executeAsync(CommandContext commandContext) {
+ List