2022-04-18 10:52:03 +00:00
using System ;
2022-02-21 08:40:09 +00:00
using System.Threading.Tasks ;
using DSharpPlus.Entities ;
2022-08-21 07:34:11 +00:00
using DSharpPlus.SlashCommands ;
using DSharpPlus.SlashCommands.Attributes ;
2023-03-23 12:21:20 +00:00
using MySqlConnector ;
2022-02-21 08:40:09 +00:00
2022-08-21 07:34:11 +00:00
namespace SupportChild.Commands ;
public class AddStaffCommand : ApplicationCommandModule
2022-02-21 08:40:09 +00:00
{
2022-08-21 07:34:11 +00:00
[SlashRequireGuild]
[SlashCommand("addstaff", "Adds a new staff member.")]
public async Task OnExecute ( InteractionContext command , [ Option ( "User" , "User to add to staff." ) ] DiscordUser user )
2022-05-19 11:38:59 +00:00
{
2022-08-21 07:34:11 +00:00
DiscordMember staffMember = null ;
try
2022-05-19 11:38:59 +00:00
{
2022-08-21 07:34:11 +00:00
staffMember = user = = null ? command . Member : await command . Guild . GetMemberAsync ( user . Id ) ;
2022-02-21 08:40:09 +00:00
2022-08-21 07:34:11 +00:00
if ( staffMember = = null )
2022-05-19 11:38:59 +00:00
{
2022-08-21 07:34:11 +00:00
await command . CreateResponseAsync ( new DiscordEmbedBuilder
2022-05-19 11:38:59 +00:00
{
Color = DiscordColor . Red ,
2022-08-21 07:34:11 +00:00
Description = "Could not find that user in this server."
} , true ) ;
2022-05-19 11:38:59 +00:00
return ;
}
2022-08-21 07:34:11 +00:00
}
catch ( Exception )
{
await command . CreateResponseAsync ( new DiscordEmbedBuilder
2022-05-19 11:38:59 +00:00
{
2022-08-21 07:34:11 +00:00
Color = DiscordColor . Red ,
Description = "Could not find that user in this server."
} , true ) ;
return ;
}
2022-02-21 08:40:09 +00:00
2022-08-21 07:34:11 +00:00
await using MySqlConnection c = Database . GetConnection ( ) ;
MySqlCommand cmd = Database . IsStaff ( staffMember . Id ) ? new MySqlCommand ( @"UPDATE staff SET name = @name WHERE user_id = @user_id" , c ) : new MySqlCommand ( @"INSERT INTO staff (user_id, name) VALUES (@user_id, @name);" , c ) ;
2022-02-21 08:40:09 +00:00
2022-08-21 07:34:11 +00:00
c . Open ( ) ;
cmd . Parameters . AddWithValue ( "@user_id" , staffMember . Id ) ;
cmd . Parameters . AddWithValue ( "@name" , staffMember . DisplayName ) ;
cmd . ExecuteNonQuery ( ) ;
cmd . Dispose ( ) ;
2022-02-21 08:40:09 +00:00
2022-08-21 07:34:11 +00:00
await command . CreateResponseAsync ( new DiscordEmbedBuilder
{
Color = DiscordColor . Green ,
Description = staffMember . Mention + " was added to staff."
} ) ;
2022-02-21 08:40:09 +00:00
2022-08-21 07:34:11 +00:00
// Log it if the log channel exists
DiscordChannel logChannel = command . Guild . GetChannel ( Config . logChannel ) ;
if ( logChannel ! = null )
{
await logChannel . SendMessageAsync ( new DiscordEmbedBuilder
{
Color = DiscordColor . Green ,
Description = staffMember . Mention + " was added to staff.\n"
} ) ;
2022-05-19 11:38:59 +00:00
}
}
}