diff --git a/CMakeLists.txt b/CMakeLists.txt index eb77d5a..453b3c9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ cmake_minimum_required(VERSION 3.16) cmake_policy(VERSION 3.16...3.27) -project(dtranslatebot VERSION 0.3.0 LANGUAGES CXX) +project(dtranslatebot VERSION 0.3.1 LANGUAGES CXX) include(GNUInstallDirs) # dtranslatebot Source files diff --git a/rpmsrc/dtranslatebot.spec b/rpmsrc/dtranslatebot.spec index e93596c..2c2c894 100644 --- a/rpmsrc/dtranslatebot.spec +++ b/rpmsrc/dtranslatebot.spec @@ -15,7 +15,7 @@ %endif Name: dtranslatebot -Version: 0.3.0 +Version: 0.3.1 Release: 1%{?dist} Summary: Discord Translation Bot License: BSD-2-Clause diff --git a/src/core/slashcommands.cpp b/src/core/slashcommands.cpp index cbfe365..4ea7408 100644 --- a/src/core/slashcommands.cpp +++ b/src/core/slashcommands.cpp @@ -191,14 +191,31 @@ void slashcommands::process_my_command(dpp::cluster *bot, bot::settings::setting if (interaction.options[0].name == "language") { const std::string target = std::get(event.get_parameter("target")); - const std::lock_guard guard(*settings); - settings->set_user_target(event.command.usr.id, target); + const auto languages = settings->get_translator()->get_languages(); - auto database = settings->get_database(); - database->set_user_target(event.command.usr.id, target); - database->sync(); + std::ostringstream language_codes; + bool target_valid = false; + for (const bot::translator::language &language : languages) { + if (language.code == target) { + target_valid = true; + break; + } + language_codes << ' ' << language.code; + } - event.reply(dpp::message("Your target language has being set!").set_flags(dpp::m_ephemeral)); + if (target_valid) { + const std::lock_guard guard(*settings); + settings->set_user_target(event.command.usr.id, target); + + auto database = settings->get_database(); + database->set_user_target(event.command.usr.id, target); + database->sync(); + + event.reply(dpp::message("Your target language has being set!").set_flags(dpp::m_ephemeral)); + } + else { + event.reply(dpp::message("Target language is not valid!\nAvailable languages are:" + language_codes.str()).set_flags(dpp::m_ephemeral)); + } } else { throw std::invalid_argument("Option " + interaction.options[0].name + " is not known");