Example #1
0
        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;
                }
            }
        }