slashcommands: check my language command target language

This commit is contained in:
Syping 2026-03-27 17:10:04 +01:00
parent b6a5142755
commit 60c91d0e4f
3 changed files with 25 additions and 8 deletions

View file

@ -18,7 +18,7 @@
cmake_minimum_required(VERSION 3.16) cmake_minimum_required(VERSION 3.16)
cmake_policy(VERSION 3.16...3.27) 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) include(GNUInstallDirs)
# dtranslatebot Source files # dtranslatebot Source files

View file

@ -15,7 +15,7 @@
%endif %endif
Name: dtranslatebot Name: dtranslatebot
Version: 0.3.0 Version: 0.3.1
Release: 1%{?dist} Release: 1%{?dist}
Summary: Discord Translation Bot Summary: Discord Translation Bot
License: BSD-2-Clause License: BSD-2-Clause

View file

@ -191,6 +191,19 @@ void slashcommands::process_my_command(dpp::cluster *bot, bot::settings::setting
if (interaction.options[0].name == "language") { if (interaction.options[0].name == "language") {
const std::string target = std::get<std::string>(event.get_parameter("target")); const std::string target = std::get<std::string>(event.get_parameter("target"));
const auto languages = settings->get_translator()->get_languages();
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;
}
if (target_valid) {
const std::lock_guard<bot::settings::settings> guard(*settings); const std::lock_guard<bot::settings::settings> guard(*settings);
settings->set_user_target(event.command.usr.id, target); settings->set_user_target(event.command.usr.id, target);
@ -200,6 +213,10 @@ void slashcommands::process_my_command(dpp::cluster *bot, bot::settings::setting
event.reply(dpp::message("Your target language has being set!").set_flags(dpp::m_ephemeral)); 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 { else {
throw std::invalid_argument("Option " + interaction.options[0].name + " is not known"); throw std::invalid_argument("Option " + interaction.options[0].name + " is not known");
} }