2024-12-27 19:23:54 +13:00
using System ;
using System.Collections.Generic ;
using System.ComponentModel ;
2024-12-26 18:36:20 +13:00
using System.Threading.Tasks ;
using DSharpPlus.Commands ;
using DSharpPlus.Commands.ContextChecks ;
using DSharpPlus.Commands.Processors.SlashCommands ;
2022-02-21 21:40:09 +13:00
using DSharpPlus.Entities ;
2023-03-24 01:21:20 +13:00
using MySqlConnector ;
2022-02-21 21:40:09 +13:00
2022-08-21 19:34:11 +12:00
namespace SupportChild.Commands ;
2024-12-26 18:36:20 +13:00
public class RemoveStaffCommand
2022-02-21 21:40:09 +13:00
{
2024-12-26 18:36:20 +13:00
[RequireGuild]
[Command("removestaff")]
[Description("Removes a staff member.")]
public async Task OnExecute ( SlashCommandContext command ,
[Parameter("user")] [ Description ( "User to remove from staff." ) ] DiscordUser user )
2024-10-29 22:10:37 +13:00
{
2025-02-06 15:15:18 +13:00
if ( ! Database . StaffMember . IsStaff ( user . Id ) )
2024-10-29 22:10:37 +13:00
{
2024-12-26 18:36:20 +13:00
await command . RespondAsync ( new DiscordEmbedBuilder
2024-10-29 22:10:37 +13:00
{
Color = DiscordColor . Red ,
Description = "User is already not registered as staff."
} , true ) ;
return ;
}
2022-02-21 21:40:09 +13:00
2024-12-27 19:23:54 +13:00
await command . DeferResponseAsync ( true ) ;
2025-02-06 15:15:18 +13:00
if ( Database . Ticket . TryGetAssignedTickets ( user . Id , out List < Database . Ticket > assignedTickets ) )
2024-12-27 19:23:54 +13:00
{
foreach ( Database . Ticket assignedTicket in assignedTickets )
{
2025-02-06 15:15:18 +13:00
Database . StaffMember . UnassignStaff ( assignedTicket ) ;
2024-12-27 19:23:54 +13:00
try
{
DiscordChannel ticketChannel = await SupportChild . client . GetChannelAsync ( assignedTicket . channelID ) ;
await ticketChannel . SendMessageAsync ( new DiscordEmbedBuilder
{
Color = DiscordColor . Green ,
Description = "Unassigned <@" + assignedTicket . assignedStaffID + "> from ticket."
} ) ;
}
catch ( Exception e )
{
Logger . Error ( "Error when trying to send message about unassigning staff member from ticket-" + assignedTicket . id . ToString ( "00000" ) , e ) ;
}
2024-12-27 20:17:14 +13:00
await LogChannel . Success ( "<@" + assignedTicket . assignedStaffID + "> was unassigned from <#" + assignedTicket . channelID + "> by " + command . User . Mention + "." , assignedTicket . id ) ;
2024-12-27 19:23:54 +13:00
}
}
2025-02-06 15:15:18 +13:00
if ( Database . StaffMember . RemoveStaff ( user . Id ) )
2024-10-29 22:10:37 +13:00
{
2025-02-06 15:15:18 +13:00
await command . RespondAsync ( new DiscordEmbedBuilder
{
Color = DiscordColor . Green ,
Description = "User was removed from staff."
} , true ) ;
2022-02-21 21:40:09 +13:00
2025-02-06 15:15:18 +13:00
await LogChannel . Success ( user . Mention + " was removed from staff by " + command . User . Mention + "." ) ;
}
else
{
await command . RespondAsync ( new DiscordEmbedBuilder
{
Color = DiscordColor . Red ,
Description = "Error: Failed to remove user from staff."
} , true ) ;
}
2024-10-29 22:10:37 +13:00
}
2022-05-19 23:38:59 +12:00
}