void OnAuthGroupRemoveCommand(BasePlayer player, string groupName, string[] args)
        {
            AuthGroup group = Groups.GetByOwnerOrManager(player, groupName);

            if (group == null)
            {
                SendReply(player, Messages.YouAreNotOwnerOrManagerOfGroup, groupName);
                return;
            }

            if (args.Length == 0)
            {
                PendingInteractions.Add(player.UserIDString, new RemoveEntityFromGroup(player, group));
                SendReply(player, Messages.SelectEntityToRemoveFromGroup, group.Name);
                return;
            }

            var        playerName = args[0].Trim();
            BasePlayer member     = BasePlayerEx.FindByNameOrId(playerName);

            if (member == null)
            {
                SendReply(player, Messages.NoSuchPlayer, playerName);
                return;
            }

            if (!group.HasMember(member))
            {
                SendReply(player, Messages.CannotRemoveMemberNotMemberOfGroup, member.displayName, group.Name);
                return;
            }

            group.RemoveMember(member);
            SendReply(player, Messages.MemberRemoved, member.displayName, group.Name);
        }
        void OnAuthGroupPromoteCommand(BasePlayer player, string groupName, string[] args)
        {
            if (args.Length == 0)
            {
                SendReply(player, "<color=#ffd479>Usage:</color> /ag NAME promote PLAYER");
                return;
            }

            AuthGroup group = Groups.GetByOwnerOrManager(player, groupName);

            if (group == null)
            {
                SendReply(player, Messages.YouAreNotOwnerOrManagerOfGroup, groupName);
                return;
            }

            var        playerName = args[0].Trim();
            BasePlayer member     = BasePlayerEx.FindByNameOrId(playerName);

            if (member == null)
            {
                SendReply(player, Messages.NoSuchPlayer, playerName);
                return;
            }

            if (!group.HasMember(member))
            {
                SendReply(player, Messages.CannotPromoteNotMemberOfGroup, member.displayName, group.Name);
                return;
            }

            if (group.HasOwner(member))
            {
                SendReply(player, Messages.CannotPromoteIsOwnerOfGroup, member.displayName, group.Name);
                return;
            }

            if (group.HasManager(member))
            {
                SendReply(player, Messages.CannotPromoteAlreadyManagerOfGroup, member.displayName, group.Name);
                return;
            }

            group.Promote(member);
            SendReply(player, Messages.ManagerAdded, member.displayName, group.Name);
        }