public void HandleChildReaction(TicketChild child, SocketReaction reaction, Discord.Rest.RestUserMessage message) { var user = reaction.User.Value as SocketGuildUser; if (child.State == TicketState.Locked && reaction.UserId == child.UserId) { if (!user.GuildPermissions.Administrator && !user.Roles.Any(g => TicketManager.GetGuild(child.ParentGuildId).PermittedRoles.Contains(g.Id))) { message.RemoveReactionAsync(reaction.Emote, reaction.User.Value); return; } } if (message.Id == child.MainMessageId) { switch (child.State) { case TicketState.Open: TicketManager.ChangeChildState(TicketState.Locked, DiscordClient, user, child); break; case TicketState.Locked: TicketManager.ChangeChildState(TicketState.Open, DiscordClient, user, child); break; } } else { switch (reaction.Emote.Name) { case "⛔": TicketManager.DeleteChild(DiscordClient, child); break; case "📑": TicketManager.DeleteChildWithTranscript(DiscordClient, child); break; case "🔓": TicketManager.ChangeChildState(TicketState.Open, DiscordClient, user, child); break; } } }