From 430044a4333934e2927637980af2e6690b6b7c55 Mon Sep 17 00:00:00 2001 From: ebcq Date: Fri, 19 Sep 2025 21:39:34 +0200 Subject: [PATCH] Feat: Ticket participant --- src/commands/commands.h | 1 + src/commands/ticket_cmd.cpp | 12 +++++++++++- src/main.cpp | 10 ++++++---- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/commands/commands.h b/src/commands/commands.h index d8a729e..ed5bb73 100644 --- a/src/commands/commands.h +++ b/src/commands/commands.h @@ -78,6 +78,7 @@ struct cmdStruct cmdFunc function; std::list args; + dpp::permissions permissions; }; #endif // COMMANDS_H diff --git a/src/commands/ticket_cmd.cpp b/src/commands/ticket_cmd.cpp index aadf273..85d122f 100644 --- a/src/commands/ticket_cmd.cpp +++ b/src/commands/ticket_cmd.cpp @@ -6,7 +6,7 @@ void cmd::ticketCommand(dpp::cluster& bot, const dpp::slashcommand_t& event) dpp::message message(event.command.channel_id, "Creating ticket..."); event.reply(message.set_flags(dpp::m_ephemeral)); - const dpp::channel ticketChannel = dpp::channel() + dpp::channel ticketChannel = dpp::channel() .set_name(event.command.get_issuing_user().username) .set_type(dpp::CHANNEL_TEXT) .set_guild_id(event.command.guild_id) @@ -14,6 +14,16 @@ void cmd::ticketCommand(dpp::cluster& bot, const dpp::slashcommand_t& event) .set_permission_overwrite(event.command.guild_id, dpp::overwrite_type::ot_role, 0, dpp::p_view_channel) .set_permission_overwrite(event.command.get_issuing_user().id, dpp::overwrite_type::ot_member, dpp::p_view_channel, 0); + const dpp::command_interaction cmdData = event.command.get_command_interaction(); + if (!cmdData.options.empty()) + { + if (const auto option = cmdData.options[0]; option.type == dpp::co_user) + { + const auto participantId = std::get(option.value); + ticketChannel.set_permission_overwrite(participantId, dpp::overwrite_type::ot_member,dpp::p_view_channel, 0); + } + } + bot.channel_create(ticketChannel, [&bot, event](const dpp::confirmation_callback_t& callback) { if (!callback.is_error()) { diff --git a/src/main.cpp b/src/main.cpp index 541ce3a..5d49b09 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -12,10 +12,10 @@ std::list cmdList = { { "topic", "Get a topic question", cmd::topicCommand }, { "coding", "Get a coding question", cmd::codingCommand }, { "close", "Close a ticket or forum post", cmd::closeCommand }, - { "ticket", "Open a ticket", cmd::ticketCommand }, + { "ticket", "Open a ticket", cmd::ticketCommand, { dpp::command_option(dpp::command_option_type::co_user, "participant", "Add participant", false) }}, { "code", "Formatting code on Discord", cmd::codeCommand }, { "project", "Get a project idea", cmd::projectCommand }, - { "rule", "Get the server rules", cmd::ruleCommand, { dpp::command_option(dpp::command_option_type::co_integer, "number", "Rule to mention", false) } } + { "rule", "Get the server rules", cmd::ruleCommand, { dpp::command_option(dpp::command_option_type::co_integer, "number", "Rule to mention", false) }} }; int main() @@ -40,9 +40,11 @@ int main() slashCommand.set_application_id(bot.me.id); for (const dpp::command_option& arg : item.args) - { slashCommand.add_option(arg); - } + + if (item.permissions) + slashCommand.set_default_permissions(dpp::permission(item.permissions)); + slashcommands.push_back(slashCommand); } bot.global_bulk_command_create(slashcommands);