-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathticket_cmd.cpp
More file actions
47 lines (41 loc) · 2.06 KB
/
ticket_cmd.cpp
File metadata and controls
47 lines (41 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include "commands.h"
#include "../globals/globals.h"
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));
constexpr int ticketPerms = dpp::p_view_channel
| dpp::p_send_messages
| dpp::p_attach_files
| dpp::p_embed_links;
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)
.set_parent_id(globals::category::ticketId)
.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, ticketPerms, 0)
.set_permission_overwrite(globals::role::staffId, dpp::overwrite_type::ot_role, ticketPerms, 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<dpp::snowflake>(option.value);
ticketChannel.set_permission_overwrite(participantId, dpp::overwrite_type::ot_member,ticketPerms, 0);
}
}
bot.channel_create(ticketChannel, [&bot, event](const dpp::confirmation_callback_t& callback) {
if (!callback.is_error())
{
const auto ticketChannel = std::get<dpp::channel>(callback.value);
const auto pingMessage = dpp::message(ticketChannel.id, event.command.get_issuing_user().get_mention() + " opened this ticket.");
bot.message_create(pingMessage);
event.edit_response("Ticket " + ticketChannel.get_mention() + " created!");
}
else
{
event.edit_response("Failed to create ticket channel!");
}
});
}